有谁知道如何使用TSQL获取Azure数据库的版本(标准版等)和Service_Objective(S1,S2等)?我可以找到PowerShell和Portal解释,但我找不到任何对TSQL的引用。
答案 0 :(得分:9)
您可以使用此查询来检查数据库的Service Edition:
SELECT DATABASEPROPERTYEX('Database_Name', 'EDITION')
SELECT DATABASEPROPERTYEX('Database_Name', 'ServiceObjective')
如果ServiceObjective
行不起作用,可能有多种原因:
您可能会尝试为没有定义服务目标的版本获取服务目标。例如,网络版。对于Web Edition,ServiceObjective应返回null。
在评论中提及Satya,这仅适用于V12服务器。因此,如果您尝试在V12之前的服务器上运行此命令,则此命令将不起作用。
答案 1 :(得分:8)
<强>更新强>
我最近切换到使用Azure系统表sys.database_service_objectives
。这允许我在单个查询中检索SQL数据库弹性池名称。为方便起见,原始答案仍记录在下面。
SELECT @@VERSION AS AzureVersion,
db_name() AS [Name],
edition AS AzureEdition,
service_objective AS AzureTier,
elastic_pool_name AS ElasticPool
FROM sys.database_service_objectives
原始答案
我喜欢一次抓取所有三个值,使用db_name()
指向当前数据库,并将NULL
ServiceObjective替换为v11服务器的更有用的消息。
SELECT @@VERSION AS AzureVersion,
DATABASEPROPERTYEX(DB_NAME(), 'Edition') AS AzureEdition,
COALESCE(DATABASEPROPERTYEX(DB_NAME(), 'ServiceObjective'), 'N/A in v11') AS AzureTier