背景
我們知道Azure Sql Database 可以降低運維成本、是一種Pass模式,有資源彈性設置,可以自由調整資源自動對應不同業務高峰(當然也可以降低費用成本),也方便項目后期的資源擴展,以及一些其他優點或特性,這就不一一列出。那么數據庫開發工程師來說,操作Azure Sql Database 與我們使用的SSMS(Microsoft Sql Server Management Studio)在本地庫上操作有哪些區別。
我們簡單從如下幾部分進行比較
1.創建對象比較;(簡單列一下Azure 上創建數據庫操作,SSMS創建數據庫默認省略)
2.連接庫比較;
3.操作比較;
1.創建對象比較




2.鏈接庫的比較



通過上述圖可以看到,在azure sql database 中涉及到實例一級的對象都是沒有了。
在azure sql database大概總結如下:
1.沒有 AlwaysON,沒有數據庫鏡像,沒有日志傳送,沒有復制。 有異地復制可以直接添加數據庫輔助副本(庫大小是指數據文件大小);
2.沒有 agent ;如需執行定時調度可以參考《通過本地Agent監控Azure_sql_database》
3.沒有SSIS;
4.不支持實例一級的對象(如不支持全局臨時表、沒有Profiler等);如需監控可以參考《如何在Azure sql database 下監控正在運行的腳本或某個存儲過程是否已運行》
3.具體操作方面比較


通過上圖發現azure sql database系統數據庫中沒有tempdb,那能否使用臨時表之類的對象?
首先查看當前的azure sql database 版本號


測試臨時表
(不是sql server 2016 temporal table)



可以使用臨時表,不支持使用全局的臨時表。


Pass模式下,某些命令已不支持。


注意默認的getdate()是UTC時間,與北京時間相差8小時。


不能在本庫顯式調用其他庫,如:use master
默認情況下,azure sql database 不支持跨庫操作,需要創建擴展表,建同構同名的表,只能是只讀且架構唯一。如要存儲過程進行跨庫操作,需使用sp_execute_remote調用。
ssms 2012界面下存儲過程點右鍵如下圖:


SSMS 2016界面下存儲過程點右鍵如下圖:


UI界面操作,建議安裝最新版本SSMS.或者 exec sp_helptext 加具體的存儲過程名稱,執行,把執行結果拷出才是存儲過程的腳本;
參考資料
總結
azure sql database 與ssms相比:
1.沒有 AlwaysON,沒有數據庫鏡像,沒有日志傳送,沒有復制。 有異地復制可以直接添加數據庫輔助副本(庫大小是指數據文件大小);
2.沒有 agent ;如需執行定時調度可以參考《通過本地Agent監控Azure sql database》
3.沒有SSIS;
4.不支持實例一級的對象(例如不支持全局變量、沒有Profiler等);如需監控可以參考《如何在Azure sql database 下監控正在運行的腳本或某個存儲過程是否已運行》
5.有些命令不支持,因azure sql database 是Pass模式;
6.注意默認getdate()是取UTC時間,與北京時間相差8小時;
7.不能在本庫顯式調用其他庫;
8.默認情況下,azure sql database 不支持跨庫操作,需要創建擴展表,建同構同名的表,只能是只讀且架構唯一;
9.azure sql database 是基於v12的引擎,要在UI界面上操作建議安裝ssms 2016版操作。
10.用戶名限制,不能使用admin\administrator\sa\guest\root