Я понимаю, что в 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]
не работает, будет ли запрос извлекать данные из [LinkedServer1]
с использованием условия else или из-за первой проверки запроса @CSQL = 'SELECT @ROWCOUNT = COUNT(*) from [LinkedServer1].DATABASE.DBO.TABLE'
запрос не вернет никаких записей, поскольку LinkedServer1 недоступен?