【问题标题】:Export To Database Table Error导出到数据库表错误
【发布时间】:2014-07-04 18:36:48
【问题描述】:

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

错误:

错误 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 Provider:连接尝试失败,因为连接方在一段时间后没有正确响应,或建立连接失败,因为连接的主机没有响应。 ”。 (SQL Server 导入导出向导)

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

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    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. 右键单击“别名”,然后选择“新建别名...”

    4. 在“服务器”字段中提供源 SQL 服务器的 IP 地址,并在“别名”字段中指定源服务器名称。

    5. 选择协议为“NamedPipes”并点击确定

    存在导致 TDS 错误的错误,因此请确保您拥有适用于 SQL Server 的最新更新/补丁/修补程序。

    【讨论】:

    • 谢谢!这很奏效,不过确实需要很长时间,移动 190 万条记录大约需要 8 小时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2021-09-24
    • 2018-12-05
    • 2017-08-31
    相关资源
    最近更新 更多