【问题标题】:If Linked Server is down What will happen to the Query in SQL Server?如果链接服务器关闭 SQL Server 中的查询会发生什么情况?
【发布时间】:2020-11-23 07:26:27
【问题描述】:

我了解在 MS SQL Server 中,如果物理服务器关闭,则该服务的数据库实例将无法访问,并且无法从该服务器执行查询。

如果我有一个数据库存储过程来使用IF ELSE 条件从链接服务器获取数据,并且IF 一个链接服务器已关闭,那么查询是否会将数据获取为 0 并转到ELSE 条件进行获取来自链接服务器 2 的数据?

@CSQL = 'SELECT @ROWCOUNT = COUNT(*) from [LinkedServer1].DATABASE.DBO.TABLE'
EXEC (@CSQL);

IF @ROWCOUNT>0
BEGIN

SET @SQL = 'INSERT INTO TABLE SELECT * FROM [LINKEDSEVER1].DATABASE.DBO.TABLE';
EXEC(@SQL);

END
ELSE
BEGIN

SET @SQL = 'INSERT INTO TABLE SELECT * FROM [LINKEDSEVER2].DATABASE.DBO.TABLE';
EXEC(@SQL);

END

如果[LinkedServer1] 已关闭,查询是否会使用 else 条件从 [LinkedServer1] 获取数据,或者由于第一次查询检查 @CSQL = 'SELECT @ROWCOUNT = COUNT(*) from [LinkedServer1].DATABASE.DBO.TABLE' 查询将不会返回任何记录,因为 LinkedServer1 不可访问?

【问题讨论】:

    标签: sql-server if-statement linked-server dynamic-queries


    【解决方案1】:

    我明白了,但使用此处给出的答案作为起点可能会更好: Check if a linked SQL server is running

    无论如何,他们都希望代码在两个链接的服务器上运行,但这只是略有不同。您可以检查两台服务器是否都已启动,在 catch 块中分配变量。

    在它们运行后,您将通过检查分配的变量来知道 1 个或两个服务器是否启动,然后运行您的代码(如果两个服务器都关闭,则不运行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2011-05-04
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      相关资源
      最近更新 更多