【问题标题】:Import of data from Teradata to SQL Server times out, regardless of Teradata timeout settings无论 Teradata 超时设置如何,从 Teradata 到 SQL Server 的数据导入都会超时
【发布时间】:2016-06-30 05:03:36
【问题描述】:

我正在使用 SQL Server 导入和导出向导将数据从 Teradata 提取到 SQL Server 表中:

  1. 在 SSMS 中,我右键单击目标数据库并选择“导入数据”
  2. 在“选择数据源”中,我选择“.NET Framework Data Provider for Teradata”
  3. 我将命令超时和连接超时更改为较大的数字,例如 3000(我也尝试过 0 和 -1)。
  4. 我设置了 SQL Server 数据源
  5. 我指定查询以选择数据(查询在 Toad 中运行需要 15 分钟以上)
  6. 我设置了在 SQL Server 中创建目标表的选项​​
  7. 我执行包。
  8. 包在约 40 秒后预执行失败(以下错误)。

我可以从 Visual Studio 中的 SSIS 包正常运行此查询,或者将其添加到作业中。在那里设置命令超时会有所不同。我希望能够直接从 SSMS 一次性运行,而不必每次都创建一个 SSIS 包。

我在 SQL Server 端没有连接超时限制(设置为 0)。

错误文本:

Pre-execute (Error)
Messages
Error 0xc0047062: Data Flow Task 1: Teradata.Client.Provider.TdException (0x80004005): [.NET Data Provider for Teradata] [100038] Command did not complete within the time specified (timeout).
[Teradata Database] [3110] The transaction was aborted by the user.
[Socket Transport] [115003] The receive operation timed out. ---> System.Net.Sockets.SocketException (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
   at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at Teradata.Client.Provider.WpTcpTransport.ReadLanHeader(Buffer buffer, Int32 timeout, Int32 readBytes)
   at Teradata.Client.Provider.WpTcpTransport.ReadLanHeader(Buffer buffer, Int32 timeout, Int32 readBytes)
   at Teradata.Client.Provider.WpTcpTransport.Receive(Buffer buffer, Int32 timeout)
   at Teradata.Client.Provider.WpSession.Receive(Buffer buffer, Int32 timeout)
   at Teradata.Client.Provider.WpMessageManager.Receive(Int32 timeout)
   at Teradata.Client.Provider.WpStartRequestManager.ReceiveStartMessage()
   at Teradata.Client.Provider.WpStartRequestManager.Action(ManagerActions step)
   at Teradata.Client.Provider.WpStartRequestManager.RedriveAction(ManagerActions step)
   at Teradata.Client.Provider.WpStartRequestManager.Action()
   at Teradata.Client.Provider.Request.ExecuteStartRequest(String commandText, TeraTypeBase[][] parameters, ExecutionMode executionMode, Boolean asynchronous, Boolean isTrustedRequest)
   at Teradata.Client.Provider.TdCommand.ExecuteRequest(CommandBehavior cmdBehavior, Boolean asynchronousCall)
   at Teradata.Client.Provider.TdCommand.ExecuteReader(CommandBehavior behavior)
   at Teradata.Client.Provider.TdCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.PreExecute()
   at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 wrapper) (SQL Server Import and Export Wizard)

Error 0xc004701a: Data Flow Task 1: Source - Query failed the pre-execute phase and returned error code 0x80004005.
 (SQL Server Import and Export Wizard)

Information 0x4004300b: Data Flow Task 1: "Destination - MercTestTeradataPull" wrote 0 rows.
 (SQL Server Import and Export Wizard)

【问题讨论】:

  • 尝试改用 ODBC 提供程序(用于 ODBC 驱动程序的 OLE DB 提供程序)。我有一个通过它连接的链接服务器,永远不会超时。
  • 我也有同样的问题,@Quicksilver 想知道你是否已经解决了这个问题?

标签: sql-server import ssis ssms teradata


【解决方案1】:

我遇到了完全相同的问题,只是想通了并为我工作。打开 SSIS 包,找到默认情况下由 SQL 在 30 秒内硬编码的“命令超时”。将其更改为您想要的时间,然后保存。然后一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2018-03-11
    • 2018-03-13
    相关资源
    最近更新 更多