使用TSQL获取SQL Azure数据库版和Service_Objective

时间:2015-04-03 20:43:27

标签: tsql azure azure-sql-database

有谁知道如何使用TSQL获取Azure数据库的版本(标准版等)和Service_Objective(S1,S2等)?我可以找到PowerShell和Portal解释,但我找不到任何对TSQL的引用。

2 个答案:

答案 0 :(得分:9)

您可以使用此查询来检查数据库的Service Edition:

SELECT DATABASEPROPERTYEX('Database_Name', 'EDITION')
SELECT DATABASEPROPERTYEX('Database_Name', 'ServiceObjective')

如果ServiceObjective行不起作用,可能有多种原因:

  1. 您可能会尝试为没有定义服务目标的版本获取服务目标。例如,网络版。对于Web Edition,ServiceObjective应返回null。

  2. 在评论中提及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