【问题标题】:Is there a way to increase remote query timeout for SQL Azure without increasing DTUs?有没有办法在不增加 DTU 的情况下增加 SQL Azure 的远程查询超时?
【发布时间】:2018-03-24 22:22:15
【问题描述】:

我在我的 SSIS 包中选择行时出现超时...(下面的完整错误详细信息)。

  • 查询在 SSMS 中运行 3 分钟。
  • My SQL Azure Server 具有标准 1 规模 (20DTU)。
  • 经过的时间始终为 30 秒。
  • 我确实修复了“连接超时”并将值设置为 300(5 分钟)
  • 我不能跑

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

    因为它是 SQL Azure。

除了增加 DTU 之外,有没有办法将远程连接扩展到 azure 服务器? 我唯一的目的是偶尔在 SSIS 上运行一些大查询...

错误:System.Data.SqlClient.SqlException (0x80131904):执行超时已过期。在操作完成之前超时时间已过或服务器没有响应。 ---> System.ComponentModel.Win32Exception (0x80004005): 等待操作超时 在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔型 breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔调用者HasConnectionLock,布尔异步关闭) 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean & dataReady) 在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() 在 System.Data.SqlClient.SqlDataReader.get_MetaData() 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,字符串 resetOptionsString,Boolean isInternal,Boolean forDescribeParameterEncryption) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,布尔异步,Int32 超时,任务和任务,布尔异步写入,布尔 inRetry,SqlDataReader ds,布尔 describeParameterEncryptionRequest) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String 方法,TaskCompletionSource`1 完成,Int32 超时,Task& 任务,Boolean& usedCache,Boolean asyncWrite,Boolean inRetry) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,String 方法) 在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法) 在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 行为) 在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior 行为) 在 Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.PreExecute() 在 Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 包装器)

【问题讨论】:

    标签: ssis azure-sql-database timeoutexception


    【解决方案1】:

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

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

    希望这会有所帮助。

    【讨论】:

    • 我刚从 Ado.Net 数据源切换到 OLE DB。除此之外,我现在正在使用参数化连接字符串。现在我的查询在 DEBUG 上运行良好,没有 30 秒的问题。我不知道为什么...
    • 感谢您与我们分享您的发现。让我尝试调查并与更多人分享。如果我得到答案,我会更新这个帖子。
    • 你好,欧延。我想我现在知道为什么你没有看到与 OLEDB 相同的行为。 OLEDB 源的默认连接超时为零。
    • 但是对于 Ado.Net 数据源,我确实增加了超时,但它总是,总是在 30 秒内失败......也许我也可以自己做一些测试。
    【解决方案2】:

    我认为没有增加 Azure SQL 的“远程查询超时”配置的选项。截至今天,没有直接的信息存在,为什么它在 Azure SQL 中不可用, 当通过 sp_configure 在 SQL Server 的本地版本中可以实现相同时。我对此的疯狂猜测是让任何查询运行无限时间将阻碍 MS 的高可用性和故障转移架构承诺

    很少有数据库配置设置可以在 Azure SQL 中使用 ALTER DATABASE SCOPED CONFIGURATION transact sql 进行修改。更多信息可以找到here

    我有一个每月通过 SQL JOB 运行维护脚本的用例,该脚本在 P11 高级版中运行 6 小时,我很确定将高级级别提高到 P14 不会有任何区别。目前这是从 SSMS 手动执行的。当我找到一个选项时,我会及时通知你

    【讨论】:

    • 突然触发远程查询超时是用于传出连接,与接收请求的服务器无关。因此增加了 SSIS 服务器的远程查询超时,该服务器使用 SP_Configure proc 在 Azure SQL 的托管实例中运行并且它工作
    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2019-10-03
    • 2012-10-29
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多