【问题标题】:Remote query timeout for Azure SQL DatabaseAzure SQL 数据库的远程查询超时
【发布时间】:2021-05-11 17:49:49
【问题描述】:

我正在 Azure SQL 数据库上执行存储过程。

正在通过链接服务器从本地 SQL Server 实例上的 SQL Server 代理作业调用该过程:

EXEC ('EXEC azuredb.dbo.FullProcess') AT [MYAZURESERVER.DATABASE.WINDOWS.NET]

大约之后。执行 12 分钟我得到一个查询超时错误:

OLE DB provider "SQLNCLI11" for linked server "MYAZURESERVER.DATABASE.WINDOWS.NET" returned message "Query timeout expired".

如何禁用/控制远程超时时间?我尝试在链接服务器设置中将“远程查询超时”设置为 0,但似乎没有效果。此外,Azure SQL Server 上似乎没有这样的设置。

【问题讨论】:

  • 你检查 Azure SQL 的防火墙规则了吗?
  • 防火墙规则配置正确。这不是这种行为的原因 - 如果防火墙是一个问题,那么我将根本无法运行存储过程。
  • 你可以通过链接服务器从 Azure sql 中的任何表查询?
  • 是的。问题是执行时间超过 ca 时发生的超时错误。 12 分钟。
  • 嗨@saso,现在可以工作了吗?

标签: azure-sql-database azure-sql-server


【解决方案1】:

更新:
我的存储过程将执行 12 分钟。当我在链接服务器设置中将“远程查询超时”设置为 900 或更大时。 “远程查询超时”应该比实际执行时间大一点。如果值相同,仍然会报超时错误。
结果成功返回!这两个时间差就是存储过程的执行时间:


嗨@saso 我的步骤如下。根据这个article,它说我们需要创建2个链接服务器来实现这一点。

  1. 创建第一个名为JOSEPHSERVER2.DATABASE.WINDOWS.NET的链接服务器:
    输入登录名和密码登录 Azure SQL:

  2. 创建名为AZURE LINKED SERVICE 的第二个链接服务器。第二个链接服务器将引用第一个链接服务器。在Catalog 中输入用户数据库名称。
    还需要输入登录名和密码:
    选择Server Options并将“RPC”和“RPC Out”设置为true,这样我们就可以通过这个链接服务器调用存储过程了:

  3. 然后我可以在本地 SQL Server 中调用远程存储过程:

【讨论】:

  • 你好约瑟夫。感谢您的参与。但是,这里的问题不是建立从本地 SQL Server 到 Azure SQL 数据库的连接。这已配置并且正在工作。在大多数情况下,使用 EXEC AT 语句在 Azure SQL 数据库上查询或执行存储过程是可行的。问题是何时执行 SP 并且执行时间超过 ca。 12 分钟,然后执行被取消,并显示“远程超时错误”消息。我想修改/延长远程超时值,但找不到怎么做(在链接服务器属性中设置没有效果)。
  • 在链接服务器设置中将“远程查询超时”设置为300有什么效果?你说它设置为 0。
  • 没有效果。 300 表示 5 分钟(300 秒)。 0 表示没有超时(禁用超时)。
  • 是的,你是对的。我设置了存储过程等待时间。现在也得到了超时错误。我正在研究如何解决这个问题。
  • 嗨@saso,我的存储过程将执行 12 分钟。当我将“远程查询超时”设置为900。它成功返回了结果!我已经更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2017-12-09
  • 2016-05-08
  • 1970-01-01
  • 2017-09-22
相关资源
最近更新 更多