如何:部署資料層應用程式

使用 [部署資料層應用程式] 精靈,將 DAC 封裝中的資料層應用程式 (DAC) 部署到現有的 SQL Azure 或是 SQL Server 2005 SP4 或更新版本的執行個體。 部署程序會將 DAC 定義儲存到 msdb 系統資料庫 (SQL Azure 中則是 master) 來註冊 DAC 執行個體、建立資料庫,然後在資料庫中填入 DAC 內定義的所有資料庫物件。

開始之前

您可以將 DAC 部署至 SQL Server 2005 Service Pack 4 (SP4) 或更新版本中的 Database Engine 執行個體,或部署至 SQL Azure。 您必須使用 SQL Server 2008 R2 中的用戶端工具,也可能必須使用 DAC Framework 1.1。 如需詳細資訊,請參閱<SQL Server 物件和版本的 DAC 支援>。

如果是 Database Engine 的受管理的執行個體,下次從執行個體將公用程式收集組傳送到公用程式控制點時,部署的 DAC 將會合併到 SQL Server 公用程式中。 然後 DAC 會出現在 Management Studio**[公用程式總管]** 的 [部署的資料層應用程式] 節點中,並在 [部署的資料層應用程式] 詳細資料頁面中報告。

如需有關建立 DAC 封裝的詳細資訊,請參閱<實作資料層應用程式>。

需求

連接到 SQL Server 2005 SP4 或更新版本時,DAC 只能由系統管理員 (sysadmin) 或伺服器管理員 (serveradmin) 固定伺服器角色的成員,或是具有 dbcreator 固定伺服器角色及擁有 ALTER ANY LOGIN 權限的登入部署。 內建的 SQL Server 系統管理員帳戶 (名稱為 sa) 也可以部署 DAC。 將具有登入的 DAC 部署至 SQL Azure,需要 loginmanager 或伺服器管理員 (serveradmin) 角色的成員資格。 將不具有登入的 DAC 部署至 SQL Azure,需要 dbmanager 或伺服器管理員 (serveradmin) 角色的成員資格。

安全性注意事項安全性注意事項

建議您不要部署來源不明或來源不受信任的 DAC 封裝。 這類 DAC 可能包含惡意程式碼,因此可能會執行非預期的 Transact-SQL 程式碼,或是修改結構描述而造成錯誤。 在您使用來源不明或來源不受信任的 DAC 之前,請解除封裝 DAC 並檢查程式碼,例如預存程序或其他使用者定義的程式碼。 如需有關檢視 DAC 內容的詳細資訊,請參閱<如何:驗證 DAC 封裝>。

登入密碼

為了提高安全性,SQL Server 驗證登入會儲存在 DAC 封裝中,而且沒有任何密碼。 當您部署或升級此封裝時,此登入會建立為停用的登入,而且會產生密碼。 若要啟用登入,請使用具有 ALTER ANY LOGIN 權限的登入進行登入,並使用 ALTER LOGIN 來啟用登入,然後指派可以傳達給使用者的新密碼。 Windows 驗證登入不需要這項處理,因為這類登入的密碼不是由 SQL Server 所管理。

資料庫選項和設定

根據預設,部署期間建立的資料庫將會擁有 CREATE DATABASE 陳述式中的所有預設設定,但是以下項目除外:

  • 資料庫定序和相容性層級設定為 DAC 封裝內所定義的值。 在 Visual Studio 中從 DAC 專案建置的封裝會使用 DAC 專案中的設定值。 從現有的資料庫中擷取的封裝會使用原始資料庫中的值。

  • 您可以在 [更新組態] 頁面上調整某些資料庫設定,例如資料庫名稱和檔案路徑。 部署至 SQL Azure 時,無法設定檔案路徑。

某些資料庫選項 (例如 TRUSTWORTHY、DB_CHAINING 和 HONOR_BROKER_PRIORITY) 無法在部署過程中調整。 實體屬性 (如檔案群組數目或檔案數目和大小) 無法在部署過程中更改。 部署完成之後,您可以使用 ALTER DATABASE 陳述式、SQL Server Management Studio 或 SQL Server PowerShell 來修改資料庫。 如需詳細資訊,請參閱<修改資料庫>。

多個部署

可以將相同的 DAC 封裝部署到單一 Database Engine 執行個體多次,但是一次只能執行一個部署。 針對每個部署指定的 DAC 執行個體名稱在 Database Engine 執行個體中必須是唯一的。

使用 PowerShell 部署 DAC

建立包含下列程式碼的 PowerShell 指令碼 (.ps1) 檔案。

  1. 加入程式碼以建立 SMO Server 物件並將它設定為包含您想要從中擷取 DAC 之資料庫的執行個體。 此範例會將 Server 物件設定為本機電腦上的預設執行個體:

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
  2. 加入程式碼以開啟 ServerConnection 物件並連接至相同的執行個體。

    ## 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)
    
  3. 加入程式碼以載入 DAC 封裝檔案。 此範例會載入 MyApplication.dacpac 檔案。

    ## Load the DAC package file.
    $dacpacPath = "C:\MyDACs\MyApplication.dacpac"
    $fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
    $dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
    
  4. 加入程式碼以訂閱 DAC 部署事件。

    ## Subscribe to the DAC deployment events.
    $dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
    $dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})
    
  5. 加入程式碼以部署 DAC、建立資料庫並關閉 DAC 封裝檔案:

    ## Deploy the DAC and create the database.
    $dacName  = "MyApplication"
    $evaluateTSPolicy = $true
    $deployProperties = New-Object Microsoft.SqlServer.Management.Dac.DatabaseDeploymentProperties($serverconnection,$dacName)
    $dacstore.Install($dacType, $deployProperties, $evaluateTSPolicy)
    $fileStream.Close()
    

從您已載入 SQL Server PowerShell 嵌入式管理單元的 PowerShell 工作階段執行 DeployDAC.ps1,或使用 sqlps 命令提示字元公用程式。

使用部署資料層應用程式精靈

在 Management Studio 中,您可以在 [物件總管] 中導覽至伺服器底下的 [管理] 節點來啟動部署資料層應用程式精靈,並以滑鼠右鍵按一下 [資料層應用程式] 節點,然後選取 [部署資料層應用程式]

此精靈會將 DAC 部署到與您在 [物件總管] 階層中選取之節點相關聯的 Database Engine 執行個體。 例如,如果您針對名為 ProductionServer01/Accounting 的執行個體以滑鼠右鍵按一下伺服器節點來啟動精靈,DAC 將會部署到 Database Engine 的執行個體。

按一下以下清單中的連結可導覽到精靈中頁面的詳細資料:

  • 簡介頁面

  • 選取 DAC 封裝頁面

  • 檢閱原則頁面

  • 更新組態頁面

  • 摘要頁面

  • 部署頁面

簡介頁面

此頁面描述部署資料層應用程式的步驟。

不要再顯示此頁面。 - 按一下此核取方塊,之後就不會再顯示此頁面。

下一步 > - 繼續前往 [選取 DAC 封裝] 頁面。

取消 - 結束精靈,不部署 DAC。

選取 DAC 封裝頁面

使用此頁面來指定包含要部署之資料層應用程式的 DAC 封裝。 此頁面會在三種狀態之間轉換。

選取 DAC 封裝

使用此頁面的初始狀態來選擇要部署的 DAC 封裝。 DAC 封裝必須是有效的 DAC 封裝檔案,而且必須有 .dacpac 副檔名。

DAC 封裝 - 指定包含要部署之資料層應用程式的 DAC 封裝的路徑和檔案名稱。 您可以選取方塊右邊的 [瀏覽] 按鈕,瀏覽到 DAC 封裝的位置。

應用程式名稱 - 當撰寫 DAC 或是從資料庫擷取 DAC 時,顯示指派之 DAC 名稱的唯讀方塊。

版本 - 當撰寫 DAC 或是從資料庫擷取 DAC 時,顯示指派之版本的唯讀方塊。

描述 - 當撰寫 DAC 或是從資料庫擷取 DAC 時,顯示撰寫之描述的唯讀方塊。

< 上一步 - 返回 [簡介] 頁面。

下一步 > - 將進度列顯示為確認選定檔案為有效 DAC 封裝的精靈。

取消 - 結束精靈,不部署 DAC。

驗證 DAC 封裝

將進度列顯示為確認選定檔案為有效 DAC 封裝的精靈。 如果此 DAC 封裝已經驗證,此精靈會繼續回到最後一版的 [選取封裝] 頁面,您可以在此頁面上檢閱驗證的結果。 如果檔案不是有效的 DAC 封裝,精靈會停留在 [選取 DAC 封裝] 上。 請選取另一個有效的 DAC 封裝,或是取消精靈並產生新的 DAC 封裝。

正在驗證 DAC 的內容 - 報告驗證程序之目前狀態的進度列。

< 上一步 - 回到 [選取封裝] 頁面的初始狀態。

下一步 > - 繼續前往最後一版的 [選取封裝] 頁面。

取消 - 結束精靈,不部署 DAC。

檢閱原則頁面

使用此頁面來檢閱評估 DAC 伺服器選取原則的結果 (如果 DAC 有原則的話)。 DAC 伺服器選取原則為選擇性,而且當它在 Visual Studio 中建立時會指派給 DAC。 此原則會使用伺服器選取原則 Facet 來指定 Database Engine 執行個體主控 DAC 所應該符合的條件。

原則條件的評估結果 - 唯讀報表,顯示 DAC 部署原則的條件是否成功。 評估每個條件的結果會在個別行上報告。

將 DAC 部署至 SQL Azure 時,下列選取伺服器原則永遠評估為 false:作業系統版本、語言、具名管道已啟用、平台和 tcp 已啟用。

忽略違反原則 - 使用這個核取方塊可在一個或多個原則條件失敗時繼續部署。 只有當您確定所有失敗的條件都不會阻礙 DAC 作業的成功時,才選取此選項。

< 上一步 - 返回 [選取封裝] 頁面。

下一步 > - 繼續進行 [更新組態] 頁面。

取消 - 結束精靈,不部署 DAC。

更新組態頁面

使用此頁面來指定部署作業所建立之部署的 DAC 執行個體和資料庫名稱,並設定資料庫選項。

資料庫名稱 - 指定部署作業所要建立的資料庫名稱。 預設值是擷取 DAC 的來源資料庫名稱。 此名稱在 Database Engine 執行個體內必須是唯一的,且必須符合 Database Engine 識別碼的規則。

如果您變更資料庫名稱,則資料檔和記錄檔的名稱也會變更,以符合新的值。

資料庫名稱也會當做 DAC 執行個體的名稱使用。 執行個體名稱會顯示在 [物件總管][資料層應用程式] 節點或是 [公用程式總管][資料層應用程式] 節點底下的 DAC 節點上。

下列選項不適用於 SQL Azure,也不會在部署至 SQL Azure 時顯示。

使用預設資料庫位置 - 選取此選項,可在 Database Engine 執行個體的預設位置中建立資料庫資料檔和記錄檔。 檔案名稱將會使用資料庫名稱來建置。

指定資料庫檔案 - 選取此選項可針對資料檔和記錄檔指定不同的位置或名稱。

資料檔路徑和名稱 - 為資料檔指定完整路徑和檔案名稱。 此方塊中會填入預設路徑和檔案名稱。 在此方塊中編輯字串來變更預設值,或使用 [瀏覽] 按鈕導覽至放置資料檔的資料夾。

記錄檔路徑和名稱 - 為記錄檔指定完整路徑和檔案名稱。 此方塊中會填入預設路徑和檔案名稱。 在此方塊中編輯字串來變更預設值,或使用 [瀏覽] 按鈕導覽至放置記錄檔的資料夾。

< 上一步 - 返回 [選取 DAC 封裝] 頁面。

下一步 > - 繼續進行 [摘要] 頁面。

取消 - 結束精靈,不部署 DAC。

摘要頁面

使用此頁面來檢閱部署 DAC 時,精靈將會採取的動作。

將使用以下設定部署您的 DAC - 檢閱顯示的資訊,以確保採取的動作將會是正確的。 此視窗會顯示您所選取的 DAC 封裝以及您針對部署的 DAC 執行個體所選取的名稱。 此視窗也會顯示當您建立與 DAC 相關聯的資料庫時,將要使用的設定。

< 上一步 - 回到 [更新組態] 頁面來變更選擇。

下一步 > - 部署 DAC,並在 [部署 DAC] 頁面中顯示結果。

取消 - 結束精靈,不部署 DAC。

部署頁面

此頁面會報告部署作業成功或失敗。

正在部署 DAC - 報告為了部署 DAC 所採取的每個動作成功或失敗。 檢閱資訊以判斷每個動作成功或失敗。 發生錯誤的所有動作在 [結果] 資料行中都會有一個連結。 選取連結來檢視該動作的錯誤報告。

儲存報表 - 選取此按鈕可以將部署報告儲存到 HTML 檔。 此檔案會報告每個動作的狀態,包括所有動作所產生的所有錯誤。 預設資料夾為 Windows 帳戶之文件資料夾中的 SQL Server Management Studio\DAC Packages 資料夾。

完成 - 結束精靈。

變更記錄

更新的內容

加入了使用 PowerShell 的相關章節。