如何:刪除資料層應用程式

您可以使用 [刪除資料層應用程式] 精靈或 Windows PowerShell 指令碼來刪除資料層應用程式。您可以指定是否要保留、卸離或卸除相關聯的資料庫。

開始之前

當您刪除資料層應用程式 (DAC) 執行個體時,可以選擇三個選項中的一個,指定要使用與資料層應用程式相關聯之資料庫執行的動作。所有的三個選項都會刪除 DAC 定義中繼資料。這些選項的差異在於它們使用與資料層應用程式相關聯之資料庫執行的動作。精靈不會刪除與 DAC 或資料庫相關聯的任何執行個體層級物件,例如登入。

選項

資料庫動作

刪除註冊

相關聯的資料庫會保持不變。

卸離資料庫

相關聯的資料庫會遭到卸離。Database Engine 執行個體無法參考資料庫,但是資料和記錄檔保持不變。

刪除資料庫

相關聯的資料庫會遭到卸除。資料和記錄檔會遭到刪除。

在刪除 DAC 之後還原 DAC 定義中繼資料或資料庫沒有任何自動化的機制。您手動重建 DAC 執行個體的方式取決於刪除選項。

選項

如何重建 DAC 執行個體

刪除註冊

從原狀的資料庫註冊 DAC。

卸離資料庫

使用 sp_attachdb 或 SQL Server Management Studio 重新附加資料庫,然後從資料庫註冊新的 DAC 執行個體。

刪除資料庫

從刪除 DAC 之前所做的完整備份還原資料庫,然後從資料庫註冊新的 DAC 執行個體。

[!附註]

從已還原或重新附加的資料庫註冊 DAC 來重建 DAC 執行個體時,將無法重新建立原始 DAC 的某些部分,例如伺服器選取原則。

權限

DAC 只能由系統管理員 (sysadmin) 或伺服器管理員 (serveradmin) 固定伺服器角色的成員或資料庫擁有者刪除。內建的 SQL Server 系統管理員帳戶 (名稱為 sa) 也可以啟動精靈。

使用 PowerShell 刪除 DAC

建立包含下列程式碼的 PowerShell 指令碼檔案 (例如 DeleteDAC.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 刪除事件。

    ## Subscribe to the DAC delete events.
    $dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
    $dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})
    
  4. 加入程式碼以指定要刪除的 DAC。此範例會指定 DAC 名稱:

    ## Specify the DAC to delete.
    $dacName  = "MyApplication"
    
  5. 加入程式碼以使用上述指定的資訊執行 Uninstall 方法。請根據適用的刪除選項,使用下列其中一組程式碼:

    • 若要刪除 DAC 註冊但讓資料庫保持不變:

      ## Only delete the DAC definition from msdb, the associated database remains active.
      $dacstore.Unmanage($dacName)
      
    • 若要刪除 DAC 註冊並卸離資料庫:

      ## Delete the DAC definition from msdb and detach the associated database.
      $dacstore.Uninstall($dacName, [Microsoft.SqlServer.Management.Dac.DacUninstallMode]::DetachDatabase)
      
    • 若要刪除 DAC 註冊並卸除資料庫:

      ## Delete the DAC definition from msdb and drop the associated database.
      ## $dacstore.Uninstall($dacName, [Microsoft.SqlServer.Management.Dac.DacUninstallMode]::DropDatabase)
      

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

使用刪除資料層應用程式精靈

在 Management Studio 中,您可以以滑鼠右鍵按一下 [物件總管] 中的資料層應用程式,然後選取 [刪除資料層應用程式] 來啟動精靈。

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

  • 簡介

  • 選擇方法

  • 摘要

  • 刪除資料層應用程式

簡介頁面

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

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

下一步 > - 繼續進行 [選擇方法] 頁面。

取消 - 結束精靈,不刪除資料層應用程式或資料庫。

選擇方法頁面

使用此頁面來指定刪除資料層應用程式的方法。

刪除註冊 - 移除定義資料層應用程式的中繼資料,但讓相關聯的資料庫保持不變。

卸離資料庫 - 移除定義資料層應用程式的中繼資料,並卸離相關聯的資料庫。

該 Database Engine 執行個體無法再參考資料庫,但資料和記錄檔保持不變。

刪除資料庫 - 移除定義 DAC 的中繼資料並卸除相關聯的資料庫。

資料庫的資料和記錄檔會遭到永久刪除。

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

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

取消 - 結束精靈,不刪除 DAC 或資料庫。

摘要頁面

使用此頁面來檢閱刪除 DAC 執行個體時,精靈將會採取的動作。

檢閱選項摘要 - 檢閱顯示在方塊中的 DAC、資料庫與刪除方法。如果資訊正確,選取 [下一步][完成] 來刪除 DAC。如果 DAC 和資料庫資訊不正確,選取 [取消],然後選取正確的 DAC。如果刪除方法不正確,選取 [上一步],返回 [選擇方法] 頁面,然後選取其他方法。

< 上一步 - 返回 [選擇方法] 頁面選擇其他刪除方法。

下一步 > - 使用您在上一頁選擇的方法刪除 DAC 執行個體,然後繼續進行 [刪除資料層應用程式] 頁面。

取消 - 結束精靈,不刪除 DAC 執行個體。

刪除資料層應用程式頁面

此頁面會報告刪除作業成功或失敗。

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

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

完成 - 結束精靈。

變更記錄

更新的內容

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