2015-04-03 57 views
3

有誰知道如何使用TSQL獲取Azure數據庫的版本(標準等)和Service_Objective(S1,S2等)嗎?我可以找到PowerShell和Portal解釋,但我找不到任何對TSQL的參考。使用TSQL獲取SQL Azure數據庫版本和Service_Objective

+2

SQL Azure不支持全系列的TSQL命令。 Azure中的大多數數據庫操作都只能通過Azure服務管理API使用。 – Claies 2015-04-03 21:11:31

回答

5

您可以使用此查詢檢查數據庫的服務版:

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

我可以通過這種方式獲得版本,但不能獲得ServiceObjective。我仔細檢查了MSDN文檔,它看起來像這應該工作。我不確定我缺少的ServiceObjective。有任何想法嗎? https://msdn.microsoft.com/en-us/library/ms186823.aspx – 2015-04-04 03:18:18

+0

嗨布拉德,可能有多種原因,ServiceObjective不起作用。 – 2015-04-07 19:49:36

+1

我附加到V11.0.x數據庫,因此ServiceObjective命令將不起作用。感謝大家!! – 2015-04-08 18:48:55

2

這僅在V12服務器的作品,請@@version,並確保它是12.0.2000.8

+0

謝謝 - 這是問題! – 2015-04-08 18:48:25

0

對不起,我來了到現在爲止。

ServiceObjective可能有多種原因不起作用。

  1. 您可能試圖獲得沒有定義serviceobjective的版本的服務目標。例如,網絡版。在Web版的情況下,ServiceObjective應該返回null。

  2. 正如Satya在上述評論中提到的,這僅適用於V12服務器。因此,如果您嘗試在V12之前的服務器上運行此命令,則此命令將不起作用。

感謝

西爾維婭Doomra

+1

感謝您的信息。我確實在Azure中使用V11.0.x數據庫。我將不得不嘗試升級以使用該功能。 – 2015-04-08 18:48:06

4

更新 我最近已經轉向使用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()在當前數據庫指向,並且與V11服務器更有用的信息更換NULL ServiceObjective 。

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

夢幻般的查詢Dusty – pimbrouwers 2016-01-20 15:34:28

相關問題