【发布时间】:2013-01-14 15:44:01
【问题描述】:
我有一个 BizTalk 业务流程,它正在发送一条消息,该消息使用 WCF-SQL 适配器生成的架构映射到存储过程。存储过程的参数之一是表值参数。当有 BT 可以转换为表值的记录时,这可以正常工作。但是,如果记录为零,我仍然需要触发 proc,因为提供的其他参数仍然可以执行。但是编排崩溃了
System.NotSupportedException: DBNull value for parameter '@DetailRecords' is not supported. Table-valued parameters cannot be DBNull.
显然你可以绕过这个错误并在不提供该参数的情况下执行存储过程,SQL Server 将自动生成一个空表。
有没有办法让 BizTalk 触发包含表值参数的存储过程,而不尝试将参数作为 DBNull 传递?
【问题讨论】:
-
不能自己创建一个空的TVP吗?
-
好吧,我不确定。现在我有一个 BizTalk 映射,可以将我的内部记录转换为 WCF-SQL 记录。因此,如果要使用的映射的记录为零,则 BizTalk 似乎正在尝试传递 DBNull。如果有办法修改我的映射以避免 DBNull,我不知道该怎么做。这真的是我的问题。
标签: sql-server biztalk