【发布时间】: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