如何:將資料庫註冊為 DAC

您可以使用 [註冊資料層應用程式] 精靈或 Windows PowerShell 指令碼來建立資料層應用程式 (DAC) 定義,以便描述現有資料庫中的物件,並在 msdb 系統資料庫 (在 SQL Azure 中為 master) 中註冊 DAC 定義。

開始之前

您可以從 SQL Azure 資料庫 或 SQL Server 2005 Service Pack 4 (SP4) 或更新版本的資料庫註冊 DAC。 如果是 Database Engine 的受管理的執行個體,下次從執行個體將公用程式收集組傳送到公用程式控制點時,註冊的 DAC 將會合併到 SQL Server 公用程式中。 然後 DAC 會出現在 Management Studio**[公用程式總管]** 的 [部署的資料層應用程式] 節點中,並在 [部署的資料層應用程式] 詳細資料頁面中報告。

注意:在 Database Engine 執行個體中註冊 DAC 至少需要 ALTER ANY LOGIN 和資料庫範圍 VIEW DEFINITION 權限、sys.sql_expression_dependencies 的 SELECT 權限,以及 dbcreator 固定伺服器角色的成員資格。 系統管理員 (sysadmin) 固定伺服器角色的成員或是內建 SQL Server 系統管理員帳戶 sa 也可以註冊 DAC。 在 SQL Azure 中註冊不包含登入的 DAC,需要 dbmanager 或伺服器管理員 (serveradmin) 角色的成員資格。 在 SQL Azure 中註冊包含登入的 DAC,需要 loginmanager 或伺服器管理員 (serveradmin) 角色的成員資格。

限制

DAC 註冊只能在 SQL Azure 或 SQL Server 2005 SP4 或更新版本上執行。 如果已經針對資料庫註冊 DAC,將無法執行 DAC 註冊。 例如,如果資料庫是藉由部署 DAC 所建立,您將無法執行 [註冊資料層應用程式] 精靈。

如果資料庫包含了 DAC 中不支援的物件,您就無法註冊 DAC。 如需有關 DAC 中支援之物件類型的詳細資訊,請參閱<SQL Server 物件和版本的 DAC 支援>。

使用 PowerShell 註冊 DAC

建立包含下列程式碼的 RegisterDAC.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. 加入程式碼以指定資料庫。 此範例會指定名為 MyDB 的資料庫:

    ## Specify the database to register as a DAC.
    $dbname = "MyDB"
    
  3. 加入程式碼以指定 DAC 的中繼資料。 此範例會指定 DAC 名稱、版本和描述:

    ## Specify the DAC metadata.
    $applicationname = "MyApplication"
    $version = "1.0.0.0"
    $description = "This DAC defines the database used by my application."
    
  4. 加入程式碼以使用上述指定的資訊執行 Register 方法。

    ## Register the DAC.
    $registerunit = New-Object Microsoft.SqlServer.Management.Dac.DacExtractionUnit($srv, $dbname, $applicationname, $version)
    $registerunit.Description = $description
    $registerunit.Register()
    

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

使用註冊資料層應用程式精靈

在 Management Studio 中,您可以透過以下方式啟動 [註冊資料層應用程式] 精靈:

  • [物件總管] 中,以滑鼠右鍵按一下資料庫節點,並指向 [工作],然後選取 [註冊資料層應用程式]

此精靈會建立 DAC 定義來定義資料庫中的物件,該資料庫是由您在 [物件總管] 階層中選取的節點所表示。 DAC 定義會儲存在 msdb 系統資料庫中 (在 SQL Azure 中為 master)。 DAC 描述和資料庫的組合會形成 DAC 執行個體。當下一個公用程式收集組傳輸到公用程式控制點時,DAC 執行個體的相關資訊會上傳到 SQL Server 公用程式。 您可以在 [公用程式總管] 的 [部署的資料層應用程式] 節點中檢視這項資訊。

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

  • 簡介頁面

  • 設定屬性頁面

  • 驗證與摘要頁面

  • 註冊 DAC 頁面

簡介頁面

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

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

下一步 > - 繼續進行 [設定屬性] 頁面。

取消 - 結束精靈,而不註冊 DAC。

設定屬性頁面

使用此頁面來指定 DAC 層級屬性,例如應用程式名稱和版本。

應用程式名稱 - 指定用來識別 DAC 定義之名稱的字串,此欄位已經填入資料庫名稱。

版本 - 可識別 DAC 版本的數值。 DAC 版本會用於 Visual Studio 中,以便識別開發人員正在處理的 DAC 版本。 部署 DAC 時,此版本會儲存在 msdb 資料庫中,而且您之後可以在 SQL Server Management Studio 的 [資料層應用程式] 節點底下檢視此版本。

描述 - 選擇性。 說明 DAC 用途的文字。 部署 DAC 時,此描述會儲存在 msdb 資料庫中,而且您之後可以在 Management Studio 的 [資料層應用程式] 節點底下檢視此描述。

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

下一步 > - 確認 DAC 可以從資料庫的物件建立而來,並在 [驗證與摘要] 頁面中顯示結果。

取消 - 結束精靈,而不註冊 DAC。

驗證與摘要頁面

使用此頁面來檢閱註冊 DAC 時,精靈將會採取的動作。 當精靈驗證可以從資料庫中的物件建立 DAC 時,此頁面會在三種狀態之間轉換。

擷取物件

擷取資料庫與伺服器物件。 - 當精靈從資料庫及 Database Engine 執行個體擷取所有必要的物件時,將會顯示進度列。

< 上一步 - 回到 [設定屬性] 頁面來變更輸入。

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

取消 - 結束精靈,而不註冊 DAC。

驗證物件

檢查 SchemaName**.ObjectName.** - 當精靈驗證擷取之物件的相依性,並驗證這些對於 DAC 都是有效的物件時,將會顯示進度列。 SchemaName**.**ObjectName 識別目前正在驗證哪一個物件。

< 上一步 - 回到 [設定屬性] 頁面來變更輸入。

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

取消 - 結束精靈,而不註冊 DAC。

摘要

下列設定將用來註冊 DAC。 - 顯示將包含在 DAC 中的屬性和物件的報表。

儲存報表 - 選取此按鈕可以將驗證報表複本儲存為 HTML 檔。 預設資料夾為 Windows 帳戶之文件資料夾中的 SQL Server Management Studio\DAC Packages 資料夾。

< 上一步 - 回到 [設定屬性] 頁面來變更輸入。

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

取消 - 結束精靈,而不註冊 DAC。

註冊 DAC 頁面

此頁面會報告註冊作業成功或失敗。

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

儲存報表 - 選取此按鈕可以將註冊報告儲存到 HTML 檔。 此檔案會報告每個動作的狀態,包括所有動作所產生的所有錯誤。 預設資料夾為 Windows 帳戶之文件資料夾中的 SQL Server Management Studio\DAC Packages 資料夾。 檔案名稱格式為 <DACPackageName>_RegisterDACReport_yyyymmdd.html,其中 <DACPackageName> 是要部署之封裝的名稱、yyyy = 目前的年份、mm = 目前的月份,而 dd = 目前的日期。

完成 - 結束精靈。

變更記錄

更新的內容

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