Получить версию удаленного сервера MS SQL - PullRequest
1 голос
/ 26 июня 2019

У меня есть таблица, в которой есть список добавленных серверов.Но я хочу добавить дополнительный столбец, который будет определять, является ли он сервером Azure или нет.Как это можно реализовать?

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Я опубликую это как ответ, так как он использует другой параметр для 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.

0 голосов
/ 26 июня 2019

Чтобы получить доступ к тому, запущена ли данная виртуальная машина из Azure или даже AWS, нельзя выполнить из SQL Server, он не имеет представления.

Единственный верный способ определить это - использовать PowerShell или другой язык сценариев для общения со службой метаданных Azure Managed Instance. Вы можете найти это документально здесь: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...