凡間修練了好幾個百年,此時雲上的位置喬好了,該是時候回到天庭!接下來筆記第三篇,SQL資料庫透過SSMS佈署上Azure當神去!
Web應用程式+SQL佈署
- (一)地面環境準備。
- (二)Azure服務設定(Web應用程式+SQL)
- (三)SQL資料庫透過SSMS佈署上Azure
- (四)Web應用程式透過Visual Studio佈署上Azure
防火牆開通
由於我們要從Local存取cloud上的SQL Database,首先要開通防火牆,UI會自動偵測Client IP,我們只要加入就完成了設定。
1.選取SQL 伺服器(在前一篇設定SQL伺服器時,我們取名叫stanle14.database.windows.net)
2.防火牆 > 加入用戶端IP > 儲存
佈署到SQL Database
SSMS 2012開始支援從 Database Engine 執行個體佈署到 Azure SQL Database。
1.滑鼠右鍵按一下預計要部署的資料庫GroundDB,選取 [工作],然後選取 [將資料庫部署到Windows Azure SQL Database]。
2.使用 [將資料庫部署到Windows Azure SQL Database] 精靈
3. 輸入連接資訊 (按一下右邊的"連接")
4.輸入SQL伺服器的名稱(stanle14.database.windows.net)、帳號及密碼(剛剛在雲端上設定的SQL伺服器管理員帳號、密碼)
5.確認連結後,輸入好"新資料庫"的名稱(取名叫CloudDB)、大小及 暫存(DAC) BACPAC 封存檔案的目錄。
6.下一步就開始準備(DAC) BACPAC 封存檔案及佈署了!
精靈會使用資料層應用程式 (DAC) BACPAC 封存檔案,來部署資料和資料庫物件的定義。 精靈會從來源資料庫執行 DAC 匯出作業並對目的地資料庫執行 DAC 匯入。
看到上方的作業成功訊息就表示我們成功把DB上到雲端了!
7.接下來我們來敲天堂的門,使用SSMS工具連接Azure SQL Database,並且執行簡單的查詢。
佈署問題
因為Azure SQL Database不支援許多地面SQL Server功能,實際進行資料封裝時碰到很多失敗,地面待太久業障重,要回到仙界還要修練個幾百年,
- 不可以有primary外的檔案群組(filegroup):移除其他檔案群組,如果檔案群組內有資料或索引,必須重建。
- 不可以有local使用者: 移除使用者。
- 不支援項目 擴充屬性: 移除擴充屬性。
- 必須有叢集索引: 建立叢集索引。
- 不支援屬性 DataCompressionOptions : 取消壓縮 。
- 不支援屬性 FillFactor :取消填充因子 。
- 不支援屬性 LockEscalation :擴大鎖定 ALTER TABLE [dbo].[POKERS] SET (LOCK_ESCALATION=TABLE)。
安全性
精靈需要來源資料庫的 DAC 匯出權限。 登入至少需要 ALTER ANY LOGIN 和資料庫範圍 VIEW DEFINITION 權限,以及sys.sql_expression_dependencies 的 SELECT 權限。
精靈需要目的地執行個體或伺服器的 DAC 匯入權限。 登入必須是系統管理員 (sysadmin) 或伺服器管理員 (serveradmin) 固定伺服器角色的成員,或是具有 dbcreator 固定伺服器角色及擁有 ALTER ANY LOGIN 權限。
參考
積沙成塔之使用 SQL Server Management Studio 2012 將資料庫部署到 SQL Database
Query to drop all extended properties containing a certain name
使用 SQL Server Management Studio 連接到 SQL Database 並執行範例 T-SQL 查詢