【发布时间】:2015-10-03 14:39:02
【问题描述】:
我正在尝试在 BizTalk 2010 中找到自己的方法。场景很简单:我需要获取一个平面文件(分隔、定位、分段等...)并将其加载到 SQL Server 2008 R2 中的表中。
我正在尝试使用 WCF-SQL 适配器来执行此操作。
此时我不在乎速度(即,是否有多个插入或一个批量插入都没有关系,但从长远来看,我希望能够进行批量插入),我只是想要做点什么。
到目前为止,我已经完成了以下工作:
-
TestTable1在 SQL Server 2008 R2 中的表中 -
InsertIntoTestTableSQL Server 2008 R2 中的存储过程 - Visual Studio 项目包含 (a) 传入平面文件的架构,(b) SQL 表的生成架构,(c) 从传入平面文件架构到 SQL 文件架构的映射和 (d) 管道反汇编平面文件。
我已将此项目部署到 BizTalk 并为指定接收文件夹和入站映射的平面文件创建了一个接收端口。当我将测试文件放入接收文件夹时,它会消失,但 TestTable1 没有加载任何值。
我错过了什么? BizTalk 将测试文件放在哪里?我该如何设置?
我查看了许多教程(https://msdn.microsoft.com/en-us/biztalk/gg153515、https://sandroaspbiztalkblog.wordpress.com/2012/08/20/biztalk-server-transform-text-files-flat-files-into-xml-a-practical-example-part-3/、),但只是不明白我缺少什么。
任何帮助将不胜感激。
所以我让它工作了。还不知道怎么做,但我调整了适配器设置并将输入文件中的 Quantity 值从 1.000 更改为 1。我现在还可以写入 xml 文件。我得到的错误如下看起来像“数量”数据类型有问题:
适配器无法传输要发送端口“ToSQL”的消息,URL 为“mssql://.//TestDB?”。它将在为此发送端口指定的重试间隔后重新传输。详细信息:“Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException:字段/参数“数量”的输入数据根据预期的 SqlDbType Int 无效。---> System.FormatException:输入字符串的格式不正确。 在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 在 System.Number.ParseInt32(String s,NumberStyles 样式,NumberFormatInfo 信息) 在 Microsoft.Adapters.Sql.MetadataHelper.ConvertXmlValueToDotNetObject(字符串 xmlString,字符串 fieldParameterName,SqlDbType sqlDbType,Int32 maxLength,Int32 精度) --- 内部异常堆栈跟踪结束 ---
服务器堆栈跟踪: 在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannel.EndCall(字符串操作,对象 [] 输出,IAsyncResult 结果) 在 System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult 结果)
在 [0] 处重新抛出异常: 在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg) 在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 类型) 在 System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult 结果) 在 Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult 结果)"。
【问题讨论】:
-
您是如何配置发送端口的?您可以在 BizTalk 管理控制台中看到任何挂起的消息吗?
-
我现在正在尝试配置发送端口。但没有成功。我能够将其配置为将文件输出到“SEND”文件夹,但我无法让它加载数据库。我收到以下错误
-
适配器无法传输消息以发送 URL“mssql://.//TestDB?”的端口“ToSQL”。端口配置如下:类型:WCF-Custom,URI mssql://.//TestDB? (不确定),发送处理程序:BizTalkServerApplication,发送管道:PassThruTransmit,操作:TypedProcedure/dbo/InsertIntoTestTable(不确定),绑定:sqlBinding
-
我建议你先创建一个文件发送端口将消息写入文件。如果你能做到这一点。发布您的文件内容。
-
需要您在传输失败时收到的完整错误/警告。这可能是由于许多问题造成的:适配器配置错误、数据库配置错误、文件内容错误。
标签: sql sql-server-2008-r2 biztalk biztalk-2010 flat-file