適用於: SQL Server
Azure SQL Database
Azure SQL 受控執行個體
Azure Synapse Analytics
Schema Compare 讓你能比較兩個資料庫定義。 比較的來源與目標可以是連接資料庫、SQL 資料庫專案或 .dacpac 檔案的任意組合。 比較結束後,結果會呈現一組動作,使目標與來源相同。 資料庫模型間的差異會以原始碼控制差異的方式呈現。
如果 schema 比較目標是 SQL 專案或資料庫,你可以直接從 Schema Compare 介面更新目標,或產生有相同效果的更新腳本。
架構比較提供以下功能:
- 比較兩個
.dacpac檔案、資料庫或 SQL 資料庫專案的結構。 - 將結果視為一組將目標與來源進行匹配的動作。
- 選擇性排除結果中列出的動作。
- 設定控制比較範圍的選項。
- 直接將變更套用至目標,或產生腳本以在稍後套用變更。
- 把比較
.scmp檔案存下來方便重複使用。
先決條件
- SQL Server Management Studio 22.7 或更新版本
- 資料庫 DevOps 工作負載 (僅在比較 SQL 資料庫專案時必要)
啟動架構比較
你可以從多個入口點在 SSMS 中開啟 Schema Comparison。
物件總管
在
方案總管
在 方案總管 右鍵點擊 SQL 資料庫專案,選擇 Schema Compare (Preview)。 所選專案會自動設為原始碼。
備註
要在 方案總管 中處理 SQL 資料庫專案,你需要 Database DevOps 工作負載。
工具選單
在 工具 選單中,選擇 「結構比較(預覽)」。 結構比較視窗開啟時沒有預設來源或目標。
選擇來源與目標
Schema Compare 開啟後,選擇比較的來源與目標。 每個專案都可以是連接的資料庫、 .dacpac 檔案或 SQL 資料庫專案。
- 資料庫:連接一個正在執行的資料庫實例。 來源是你想用來作為目標變更基礎的資料庫定義。
-
資料層應用程式(.dacpac):瀏覽至已
.dacpac編譯的檔案。 A.dacpac包含資料庫結構的快照。 - Database Project:選擇一個開放的 SQL 資料庫project。 需要 資料庫 DevOps 工作負載。
目標就是你想評估並可能對它做修改的資料庫定義。
運行與評論比較
在工具列中選擇 「比較 」開始比較流程。
比較結束後, 結果 面板會顯示來源與目標之間的結構差異。 比較結果會依照動作將所有差異分組,例如刪除、變更或新增。
每一列都標示來源或目標結構中的物件(或兩者)以及程序對目標結構所採取的動作,使目標物件與來源物件相同。 如果你重新命名物件或移到新架構,來源名稱和目標名稱就會不同。 來源名稱以粗體顯示以強調差異。
預設情況下,結果清單會隱藏兩個結構中相同或不支援更新的物件(例如內建物件)。 在工具列中選擇適當的篩選按鈕來顯示這些物件。
若要變更群組偏好設定,請選取工具列中的 [群組結果] 下拉式清單。 選擇 「類型 」以依物件類型(如資料表、檢視或儲存程序)將結果分組。
排除差異
預設情況下,更新目標動作包含其範圍上的所有差異。 要排除不想同步的差異,請清除每列的 Include 欄位。 這排立刻變成灰色。當 Schema Compare 更新目標時,它不會考慮該列是否有待處理的變更。
如果被排除的列有相依物件,例如被 View 列參考的 Table 列,該排除列會被停用,但直到你也取消勾選所有依賴列,該列的勾選框才會被清除。 如果你重構一列,例如重新命名或移到其他結構,該列及其相依子列的勾選框會被停用。
比較選項
在工具列中選擇 選項 ,以設定哪些物件要比較,哪些差異會被忽略。 這些選項包括:
- 忽略空白
- 忽略分區配置
- 忽略欄位順序
你也可以設定比較中包含的物件類型,例如資料表、儲存程序、索引、權限及使用者自訂類型。
套用變更
要更新目標的結構,你有兩個選項:
- 套用:直接從結構比較視窗將變更套用到目標資料庫或專案。
- Generate Script:產生一個 Transact-SQL 腳本,捕捉相同的變更,之後可以檢視並執行。
生成的腳本會出現在 Transact-SQL 編輯器中,你可以檢查並對資料庫執行。
儲存比較
你可以將 Schema Compare 的比較定義存為 .scmp 檔案,稱為 schema compare 檔案。 此檔案以 XML 格式儲存比較設定資訊,內容包括:
- 來源與目標連接資訊
- 比較選項
- 排除的物件類型
你可以在 SSMS 中開啟 .scmp 檔案,之後再執行相同的比較,或與其他人分享比較結果。