我有一个表,其中包含已添加服务器的列表。但是我想添加一个额外的列,它将标识是否是Azure服务器。如何实施?
答案 0 :(得分:2)
我将其作为答案发布,因为它为SERVERPROPERTY
使用了不同的参数,但这与我链接的答案(Determine SQL Server version of linked 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数据仓库。
答案 1 :(得分:0)
要访问给定的VM是从Azure运行还是从AWS运行,都无法从SQL Server完成,
确定此问题的唯一正确方法是使用PowerShell或其他脚本语言与Azure托管实例元数据服务进行对话。您可以在此处找到记录的内容: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service