导出到数据库表错误

时间:2014-07-04 18:36:49

标签: sql-server ssis

希望有人可以给我一个关于这个的提示。我试图将查询结果从一台服务器中的数据库导出到另一台服务器中的数据库中的表。导出向导传输了几十万行,然后抛出以下错误:

错误:

错误0xc0202009:数据流任务1:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:" Microsoft SQL Server Native Client 10.0" Hresult:0x80004005描述:" TDS流中的协议错误"。 OLE DB记录可用。来源:" Microsoft SQL Server Native Client 10.0" Hresult:0x80004005描述:" TDS流中的协议错误"。 OLE DB记录可用。来源:" Microsoft SQL Server Native Client 10.0" Hresult:0x80004005描述:" TDS流中的协议错误"。 OLE DB记录可用。来源:" Microsoft SQL Server Native Client 10.0" Hresult:0x80004005描述:"通信链路故障"。 OLE DB记录可用。来源:" Microsoft SQL Server Native Client 10.0" Hresult:0x80004005说明:" TCP提供商:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。 &#34 ;.  (SQL Server导入和导出向导)

错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件上的PrimeOutput方法" Source - Query" (1)返回错误代码0xC0202009。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。  (SQL Server导入和导出向导)

1 个答案:

答案 0 :(得分:0)

Protocol error in TDS stream可能归因于一个片状网络连接或孤立的网络堵塞。 Source和Destinaion之间可能存在网络问题.TDS代表Tabular Data Stream,是SQL Server用于将结果返回给客户端的基础协议。问题出在SQL Server或网络通信上。可能是其中一台计算机中出现故障的网卡,或者是它们之间的网络硬件问题。检查两台计算机上的事件日志,查看操作系统级别的网络错误。如果使用负载平衡,还要检查防火墙设置。通过慢速网络传输大表将导致问题。

如果您正在使用链接服务器查询,则尝试显式地转换VARCHAR,例如,CAST(fieldname AS VARCHAR(30))AS FIELDNAME。有时添加CAST可以解决问题。

也请尝试以下方法。

当用于连接到源SQL Server的网络协议从TCP / IP更改为NamedPipes时,问题得以解决。基本上,使用以下步骤在目标服务器上创建源的别名。

  1. 转到开始 - >所有程序 - > Microsoft SQL Server 2008 - >配置工具 - > SQL Server配置管理器

  2. 展开节点SQL Native Client 10.0配置

  3. 右键点击"别名"然后选择" New Alias ..."

  4. 根据" Server"提供源SQL服务器的IP地址。字段并根据" Alias Name"指定源服务器名称。字段。

  5. 选择协议为" NamedPipes"然后单击“确定”

  6. 有一个错误导致TDS错误,因此请确保您拥有SQL Server的最新更新/补丁/修补程序。