Я опубликую это как ответ, так как он использует другой параметр для SERVERPROPERTY
, но это очень близко к ответу, который я связал ( Определить версию SQL Server для связанного сервера ).
Вместо этого вы захотите использовать 'Edition'
в качестве входного параметра:
DECLARE @Edition sysname;
SELECT @Edition = CONVERT(sysname,Edition)
FROM OPENQUERY(YourLinkedServer,'SELECT SERVERPROPERTY(''Edition'') AS Edition;');
IF (CHARINDEX('Azure', @Edition)) > 0
SET @IsAzure = 1;
ELSE
SET @IsAzure = 0;
Согласно документации ( SERVERPROPERTY (Transact-SQL) ), одно из возвращаемых значений - 'SQL Azure'
. Этот ответ «указывает на базу данных SQL или хранилище данных SQL» , что, как я полагаю, не является проблемой, поскольку вам нужно только узнать, находится ли хост в Azure, а не база данных SQL или хранилище данных SQL.
Если, однако, вам необходимо выяснить, является ли это базой данных SQL или хранилищем данных SQL (в Azure), вы можете использовать 'EngineEdition'
; 5
обозначает базу данных SQL и 6
хранилище данных SQL.