使用TSQL获取SQL Azure数据库版本和服务目标

使用TSQL获取SQL Azure数据库版本和服务目标,tsql,azure,azure-sql-database,Tsql,Azure,Azure Sql Database,有人知道如何使用TSQL获取Azure数据库的版本(标准等)和服务目标(S1、S2等)?我可以找到PowerShell和门户解释,但找不到任何TSQL参考。您可以使用此查询检查数据库的服务版本: SELECT DATABASEPROPERTYEX('Database_Name', 'EDITION') SELECT DATABASEPROPERTYEX('Database_Name', 'ServiceObjective') 如果ServiceObjective行不工作,可能有各种原因: 您可

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

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

SELECT DATABASEPROPERTYEX('Database_Name', 'EDITION')
SELECT DATABASEPROPERTYEX('Database_Name', 'ServiceObjective')
如果
ServiceObjective
行不工作,可能有各种原因:

  • 您可能试图为未定义serviceobjective的版本获取服务目标。例如,网络版。对于Web版,ServiceObjective应返回null

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

  • 更新 我最近切换到使用Azure系统表
    sys.database\u service\u targets
    。这还允许我在单个查询中检索SQL数据库弹性池名称。为方便起见,原始答案仍记录在下面

    原始答案

    我喜欢一次获取所有三个值,使用
    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
    

    SQL Azure不支持所有TSQL命令。Azure中的大多数数据库操作只能通过Azure服务管理API进行。奇妙的查询任务如果您的活动数据库连接为“主”,则此查询的效果会更好一些IMHO:选择top(10000)d.name,dso.*FROM sys.Database\u Service\u targets dso INNER JOIN sys.databases d on d.Database\u id=dso.Database\u id
    SELECT @@VERSION AS AzureVersion,
    DATABASEPROPERTYEX(DB_NAME(), 'Edition') AS AzureEdition,
    COALESCE(DATABASEPROPERTYEX(DB_NAME(), 'ServiceObjective'), 'N/A in v11') AS AzureTier