2017-10-12 75 views
0

我得到一个超时选择我的SSIS包中的行...(完整的错误细节如下)。有没有办法增加SQL Azure的远程查询超时而不增加DTU?

  • 该查询在SSMS中运行3分钟。
  • 我的SQL Azure服务器有一个Standard1标度(20DTU)。
  • 经过的时间总是30秒。
  • 我没有固定“连接超时”,并设置为300(5分钟)的值
  • 我不能运行

    版EXEC sp_configure远程查询超时',300;

    因为它是一个SQL Azure。

除了增加DTU,有没有办法将远程连接扩展到天青服务器? 我唯一的目的就是偶尔运行一些大的疑问在SSIS ...

Error: System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.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)

回答

4

对于I/O密集型工作负载,你应该使用的高级层次。在运行这些工作负载之前进行扩展,并在SSIS包完成时缩减到标准。请检查运行SSIS包时的DTU消耗情况,您可能会发现工作负载正在达到层限制并发生限制。

也请将异步处理设为真。有关它的更多信息,请点击here。将连接超时设置为零。

希望这会有所帮助。

+0

我刚刚从Ado.Net数据源切换到OLE DB。除此之外,我现在正在使用参数化连接字符串。现在我的查询在没有30秒问题的情况下在DEBUG上运行良好。我不知道为什么...... – Oyen

+0

感谢您与我们分享您的发现。让我试着调查并与更多人分享。如果我得到答案,我会更新这个线程。 –

+1

嗨Oyen。我想我现在知道你为什么没有看到与OLEDB相同的行为。 OLEDB源的默认连接超时时间为零。 –