共用方式為


驗證 DAC 封裝

最好先檢閱 DAC 封裝的內容,再將它部署至實際執行環境,以及先驗證升級動作,再升級現有 DAC。 當您部署的封裝之前不是在組織內開發時,特別會是這個情況。

  1. 開始之前:必要條件

  2. 若要升級 DAC,請使用:檢視 DAC 的內容、檢視資料庫變更、檢視升級動作比較 DAC

必要條件

建議您不要部署來源不明或來源不受信任的 DAC 封裝。 這類檔案可能包含惡意程式碼,因此可能會執行非預期的 Transact-SQL 程式碼,或是修改結構描述而造成錯誤。 使用來源不明或來源不受信任的 DAC 之前,請先將其部署至資料庫引擎的隔離測試執行個體,並在資料庫上執行 DBCC CHECKDB (Transact-SQL),然後檢查資料庫中的程式碼,例如預存程序或其他使用者定義的程式碼。

檢視 DAC 內容

有兩種機制可以檢視數據層應用程式 (DAC) 封裝的內容。 您可以將 DAC 套件匯入 SQL Server 開發人員工具中的 DAC 專案。 您可以將封裝的內容解壓縮到資料夾。

在 SQL Server 開發人員工具中檢視 DAC

  1. 開啟 [檔案] 功能表,選取 [開新檔案],然後選取 [專案...]。

  2. 選取 [SQL Server] 專案範本,並指定 [名稱][位置][方案名稱]

  3. 方案總管 中,以滑鼠右鍵按兩下項目節點,然後選取 [屬性...]。

  4. 在 [專案設定] 索引標籤的 [輸出類型] 區段中,選取 [資料層應用程式 (.dacpac 檔案)] 核取方塊,然後關閉屬性對話方塊。

  5. [方案總管] 中,以滑鼠右鍵按兩下項目節點,然後選取 [匯入數據層應用程式...]。

  6. 使用方案總管開啟 DAC 中的所有檔案,例如伺服器選取原則和部署前後指令碼。

  7. 使用 [結構描述檢視] 檢閱結構描述中的所有物件,特別是檢閱函數或預存程序這類物件中的程式碼時。

檢視資料夾中的 DAC

  • 依照解除封裝 DAC 封裝中的 指示,將 DAC 封裝解壓縮至資料夾。

  • 在 Management Studio 的 資料庫引擎 查詢編輯器 中開啟 Transact-SQL 腳本的內容,以檢視這些腳本的內容。

  • 在記事本等工具中檢視文字文件的內容。

檢視資料庫變更

將 DAC 的目前版本部署至實際執行環境之後,直接對相關聯資料庫進行的變更可能會與新版 DAC 中所定義的結構描述衝突。 升級至新版 DAC 之前,請確認是否已經對資料庫進行這類變更。

使用精靈檢視資料庫變更

  1. 執行 [升級資料層應用程式精靈],同時指定目前部署的 DAC 以及含有新版 DAC 的 DAC 封裝。

  2. [偵測變更] 頁面上,檢閱已對資料庫進行之變更的報表。

  3. 如果您不想要繼續升級,請選取 [取消]

  4. 如需使用精靈的詳細資訊,請參閱 升級資料層應用程式

使用 PowerShell 檢視資料庫變更

  1. 建立 SMO Server 物件,並將它設定為包含要檢視之 DAC 的執行個體。

  2. ServerConnection開啟物件並連接到相同的實例。

  3. 指定變數中的 DAC 名稱。

  4. GetDatabaseChanges()使用 方法來擷ChangeResults取物件,並將物件傳送至文本檔,以產生新的、已刪除和變更對象的簡單報表。

檢視資料庫變更範例 (PowerShell)

下列範例會報告已在名為 MyApplicaiton 的已部署 DAC 中進行的任何資料庫變更。

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = Get-Item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

檢視升級動作

使用新版 DAC 封裝升級從舊版 DAC 封裝部署的 DAC 之前,您可以產生一份報表,其中包含會在升級期間執行的 Transact-SQL 陳述式,然後檢閱這些陳述式。

使用精靈報告升級動作

  1. 執行 [升級資料層應用程式精靈],同時指定目前部署的 DAC 以及含有新版 DAC 的 DAC 封裝。

  2. [摘要] 頁面上,檢閱升級動作的報表。

  3. 如果您不想要繼續升級,請選取 [取消]

  4. 如需使用精靈的詳細資訊,請參閱 升級資料層應用程式

使用 PowerShell 報告升級動作

  1. 建立 SMO Server 物件,並將它設定為包含已部署之 DAC 的執行個體。

  2. ServerConnection開啟物件並連接到相同的實例。

  3. 使用 System.IO.File 載入 DAC 封裝檔案。

  4. 指定變數中的 DAC 名稱。

  5. GetIncrementalUpgradeScript()使用 方法來取得執行升級的 Transact-SQL 語句清單,並將清單傳送至文本檔。

  6. 關閉用來讀取 DAC 封裝檔案的檔案資料流。

檢視升級動作範例 (PowerShell)

下列範例會報告要執行的 Transact-SQL 語句,以將名為 MyApplicaiton 的 DAC 升級至 MyApplicationVNext.dacpac 檔案中定義的架構。

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = Get-Item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplicationVNext.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

比較 DAC

在升級 DAC 之前,最好先檢閱目前 DAC 與新 DAC 之間的資料庫和執行個體層級物件的差異。 如果您沒有目前 DAC 封裝的複本,您可以從目前的資料庫擷取封裝。

如果您在 SQL Server Developer Tools 中將這兩個 DAC 封裝匯入至 DAC 專案,則可以使用結構描述比較工具來分析這兩個 DAC 的差異。

您也可以將 DAC 解除封裝至不同的資料夾。 然後您可以使用差異工具 (如 WinDiff 公用程式) 來分析差異。

另請參閱

資料層應用程式
部署資料層應用程式
升級資料層應用程式