【问题标题】:Loading a flat file into SQL Server 2008 R2 via BizTalk 2010通过 BizTalk 2010 将平面文件加载到 SQL Server 2008 R2
【发布时间】:2015-10-03 14:39:02
【问题描述】:

我正在尝试在 BizTalk 2010 中找到自己的方法。场景很简单:我需要获取一个平面文件(分隔、定位、分段等...)并将其加载到 SQL Server 2008 R2 中的表中。

我正在尝试使用 WCF-SQL 适配器来执行此操作。

此时我不在乎速度(即,是否有多个插入或一个批量插入都没有关系,但从长远来看,我希望能够进行批量插入),我只是想要做点什么。

到目前为止,我已经完成了以下工作:

  1. TestTable1 在 SQL Server 2008 R2 中的表中
  2. InsertIntoTestTable SQL Server 2008 R2 中的存储过程
  3. Visual Studio 项目包含 (a) 传入平面文件的架构,(b) SQL 表的生成架构,(c) 从传入平面文件架构到 SQL 文件架构的映射和 (d) 管道反汇编平面文件。

我已将此项目部署到 BizTalk 并为指定接收文件夹和入站映射的平面文件创建了一个接收端口。当我将测试文件放入接收文件夹时,它会消失,但 TestTable1 没有加载任何值。

我错过了什么? BizTalk 将测试文件放在哪里?我该如何设置?

我查看了许多教程(https://msdn.microsoft.com/en-us/biztalk/gg153515https://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


【解决方案1】:

根据您的错误: 数量”根据预期的 SqlDbType Int 无效。

'1.000' 不是有效的 int 类型。 您应该将其转换为有效格式,例如“1”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2011-04-20
    • 2013-04-22
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多