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

Get SQL Azure database Edition and Service_Objective using TSQL

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

您可以使用此查询来检查数据库的服务版本:

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

如果 ServiceObjective 线路不工作,可能有多种原因:

  1. 您可能正在尝试为未定义服务objective 的版本获取服务objective。例如,网络版。如果是网络版,ServiceObjective 应该 return null。

  2. 正如 Satya 在他们的评论中提到的,这仅适用于 V12 服务器。因此,如果您尝试在 V12 之前的服务器上 运行 此命令,则此命令将不起作用。

更新 我最近改用 Azure 系统 table 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() 指向当前数据库,并用对 v11 服务器更有用的消息替换 NULL ServiceObjective。

SELECT @@VERSION AS AzureVersion,
DATABASEPROPERTYEX(DB_NAME(), 'Edition') AS AzureEdition,
COALESCE(DATABASEPROPERTYEX(DB_NAME(), 'ServiceObjective'), 'N/A in v11') AS AzureTier