【发布时间】:2016-06-30 05:03:36
【问题描述】:
我正在使用 SQL Server 导入和导出向导将数据从 Teradata 提取到 SQL Server 表中:
- 在 SSMS 中,我右键单击目标数据库并选择“导入数据”
- 在“选择数据源”中,我选择“.NET Framework Data Provider for Teradata”
- 我将命令超时和连接超时更改为较大的数字,例如 3000(我也尝试过 0 和 -1)。
- 我设置了 SQL Server 数据源
- 我指定查询以选择数据(查询在 Toad 中运行需要 15 分钟以上)
- 我设置了在 SQL Server 中创建目标表的选项
- 我执行包。
- 包在约 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