[BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
2007-11-06 10:24
471 查看
使用UpdateGram更新表中的数据
目录
开发环境
开发目的
开发过程
总结
问题
开发环境
Windows2003 SP2
SqlServer 2005
BizTalik2006
VisualStudio2005
开发目的
学习在SqlAdapter的UpdateGram中,使用Update用法
验证Update中特殊字符的赋值的方法
开发过程
新建项目后,点击"Add Generated Items",启动生成向导。
选中"Add Adapter Metadata"的"Add Adapter Metadata"后,点击确定
选择已经注册了的Adapter,我这里只有Sql。然后配置要连接的数据库。
接下来要求您设置数据库连接字符串。
在弹出的数据库配置对话框中,配置数据连接方式。
配置好后,进行下一步。
配置生成的Schema的Namespace,端口类型,根节点。
Namespace:自己输入喜欢的名称
Port Type:我要用UpdateGram,所以用SendPort
Root Element Name:请求、响应的根节点
选择我期待已久的UpdateGram
选择我要实现的Update功能,要操作的表及字段(这些字段可以在后面的Schema中修改)
Finish了!
向导开始自动生成代码了
生成后,在项目中会多出下面两个文件(不用解译了吧)
打开流程文件,开始添加一个端口
启动了端口配置向导
输入端口名称
选择由向导自动生成的端口
配置端口的绑定信息
又Finish了
配置结束后的效果
直接在流程中添加接收、发送,然后与端口进行连接
添加后会自动生成对应要使用到的消息Message_1,Message_2(先不要改名,后面会用到)
当然,还要有一个流程的接收端口
配置一个接收端口(如果配置不用多讲了吧)
添加一个接收,然后与刚刚添加的接收端口做连接
把接收的Active属性设置为Tree(启用状态)
接收的消息为了简单,直接用20步时,自动生成的Message_1
添加物理发送端口
在BizTalk Explore中,添加一个发送端口
端口类型设置为发送请求并接收响应
设置发送端口名称
配置发送端口的地址
ConectionString:可以用配置向导自动生成
Namespace:在7中设置的Namespace
Response Root:在7中设置的Response Root Name
配置完成后的效果
另忘了还要设置发送端口的Pipeline,全部用Xml***的
打开项目中的Schema
这里发现,ID的位置有问题,不应该在After中,把ID移到了Before中
至此,完成上面所有的操作后,启动BizTalk部署,并完成流程的绑定、启动过程(具体步骤略)。
生成一个Schema的实例,并做了一个Sample(XmlSpy的显示效果)如下
在目的表中,添加下面的数据
注意第一条,与30中的Before相对应
将30中的xml,发到流程的接收位置处
注:接收位置我配置了一个文件接收端口,这是为了测试方便。配置方法略。
观察表中的数据表发,发现数据已经按照要求,被更新了。
如果输入的Xml中,Before数据与表中数据对应不上,会报下面的错误
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5740
日期: 2007-11-5
事件: 16:39:26
用户: N/A
计算机: BIZTALK001
描述:
The adapter "SQL" raised an error message. Details "HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted " <Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted "?></Root>".
错误2
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5743
日期: 2007-11-5
事件: 16:39:26
用户: N/A
计算机: BIZTALK001
描述:
The adapter failed to transmit message going to send port "UpdateGram_Out" with URL "SQL://BIZTALK001/Test01/". It will be retransmitted after the retry interval specified for this Send Port. Details:"HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted " <Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted "?></Root>".
总结
如果对BizTalk已经比较熟悉,全部过程不会超过30分钟
更新数据中包含的特殊字符,请用XML的转意字符串表求(如:"'&><)
字段中的换行都被替换掉了(还需要继续研究)
如果没有After的定义,那么此操作将把该记录删除(实现Delete操作)
如果没有Before,只有After,就实现了Insert操作
Before中的字段不用全部显示出来(比如只有一个ID也可以)
Before中的字段如果要求为Null,那么也同样不用标记出来
此操作就象"update table set f1=v1, f2=v2, f3=v3,... where f1=v01 and f2=v02 and ..."
问题
换行如何解决?
出现的两个错误,如何解决?
如何批量Update?
特此感谢Kent在技术上的支持!
转载请注明作者及出处
目录
开发环境
开发目的
开发过程
总结
问题
开发环境
Windows2003 SP2
SqlServer 2005
BizTalik2006
VisualStudio2005
开发目的
学习在SqlAdapter的UpdateGram中,使用Update用法
验证Update中特殊字符的赋值的方法
开发过程
新建项目后,点击"Add Generated Items",启动生成向导。
选中"Add Adapter Metadata"的"Add Adapter Metadata"后,点击确定
选择已经注册了的Adapter,我这里只有Sql。然后配置要连接的数据库。
接下来要求您设置数据库连接字符串。
在弹出的数据库配置对话框中,配置数据连接方式。
配置好后,进行下一步。
配置生成的Schema的Namespace,端口类型,根节点。
Namespace:自己输入喜欢的名称
Port Type:我要用UpdateGram,所以用SendPort
Root Element Name:请求、响应的根节点
选择我期待已久的UpdateGram
选择我要实现的Update功能,要操作的表及字段(这些字段可以在后面的Schema中修改)
Finish了!
向导开始自动生成代码了
生成后,在项目中会多出下面两个文件(不用解译了吧)
打开流程文件,开始添加一个端口
启动了端口配置向导
输入端口名称
选择由向导自动生成的端口
配置端口的绑定信息
又Finish了
配置结束后的效果
直接在流程中添加接收、发送,然后与端口进行连接
添加后会自动生成对应要使用到的消息Message_1,Message_2(先不要改名,后面会用到)
当然,还要有一个流程的接收端口
配置一个接收端口(如果配置不用多讲了吧)
添加一个接收,然后与刚刚添加的接收端口做连接
把接收的Active属性设置为Tree(启用状态)
接收的消息为了简单,直接用20步时,自动生成的Message_1
添加物理发送端口
在BizTalk Explore中,添加一个发送端口
端口类型设置为发送请求并接收响应
设置发送端口名称
配置发送端口的地址
ConectionString:可以用配置向导自动生成
Namespace:在7中设置的Namespace
Response Root:在7中设置的Response Root Name
配置完成后的效果
另忘了还要设置发送端口的Pipeline,全部用Xml***的
打开项目中的Schema
这里发现,ID的位置有问题,不应该在After中,把ID移到了Before中
至此,完成上面所有的操作后,启动BizTalk部署,并完成流程的绑定、启动过程(具体步骤略)。
生成一个Schema的实例,并做了一个Sample(XmlSpy的显示效果)如下
在目的表中,添加下面的数据
注意第一条,与30中的Before相对应
将30中的xml,发到流程的接收位置处
注:接收位置我配置了一个文件接收端口,这是为了测试方便。配置方法略。
观察表中的数据表发,发现数据已经按照要求,被更新了。
如果输入的Xml中,Before数据与表中数据对应不上,会报下面的错误
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5740
日期: 2007-11-5
事件: 16:39:26
用户: N/A
计算机: BIZTALK001
描述:
The adapter "SQL" raised an error message. Details "HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted " <Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted "?></Root>".
错误2
事件类型: 警告
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5743
日期: 2007-11-5
事件: 16:39:26
用户: N/A
计算机: BIZTALK001
描述:
The adapter failed to transmit message going to send port "UpdateGram_Out" with URL "SQL://BIZTALK001/Test01/". It will be retransmitted after the retry interval specified for this Send Port. Details:"HRESULT="0x80040e14" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted " <Root xmlns:ns00="urn:schemas-microsoft-com:xml-updategram"><?MSSQLError HResult="0x80040e14" Source="Microsoft OLE DB Provider for SQL Server" Description="SQLOLEDB Error Description: Empty update, no updatable rows found Transaction aborted "?></Root>".
总结
如果对BizTalk已经比较熟悉,全部过程不会超过30分钟
更新数据中包含的特殊字符,请用XML的转意字符串表求(如:"'&><)
字段中的换行都被替换掉了(还需要继续研究)
如果没有After的定义,那么此操作将把该记录删除(实现Delete操作)
如果没有Before,只有After,就实现了Insert操作
Before中的字段不用全部显示出来(比如只有一个ID也可以)
Before中的字段如果要求为Null,那么也同样不用标记出来
此操作就象"update table set f1=v1, f2=v2, f3=v3,... where f1=v01 and f2=v02 and ..."
问题
换行如何解决?
出现的两个错误,如何解决?
如何批量Update?
特此感谢Kent在技术上的支持!
转载请注明作者及出处
相关文章推荐
- [BTS]BizTalk2006 POP3 Adapter 入门(一)
- [BTS2004]一步一步学习BizTalk2004 Sql Server Adapter
- SqlDataAdapter有关InsertCommand,UpdateCommand,DeleteCommand 实例
- SQL语句详解 MySQL update的正确用法
- C#里sqlDataAdapter.fill(DataSet,String)的用法
- 标准SQL的update语句三种用法
- DataGridView(C#使用SqlDataAdapter.Update更新数据库)
- Known Issues with the SMTP Adapter in BizTalk Server 2006
- C#使用SqlDataAdapter的Update方法更新数据
- 标准SQL的update语句三种用法
- sql update set from 的用法 (转)
- SqlDataAdapter 用法详解
- 关于SqlDataAdapter的Update()方法
- SqlDataAdapter SelectCommand,InsertCommand,UpdateCommand,DeleteCommand 属性
- SqlDataAdapter有关InsertCommand,UpdateCommand,DeleteCommand 实例
- SQL语句的写法:update语句中 case...when 用法
- SQL语句详解 MySQL update的正确用法
- 批量加载SQL Server 表和SqlDataAdapter.Update数据源(1)
- 标准SQL的update语句三种用法
- biztalk中使用biztalk adapter Pack适配器之一 – WCF-SQL