データ層アプリケーションの削除

適用対象:SQL ServerAzure SQL Database

データ層アプリケーションの削除ウィザードまたは Windows PowerShell スクリプトを使用して、データ層アプリケーションを削除できます。 関連付けられたデータベースの保持、デタッチ、または削除を指定することができます。

始める前に

データ層アプリケーション (DAC) インスタンスを削除する場合、3 つのオプションのいずれかを選択して、データ層アプリケーションに関連付けられたデータベースの処理を指定します。 どのオプションを選択した場合も、DAC 定義のメタデータが削除されます。 各オプションは、データ層アプリケーションに関連付けられたデータベースの処理方法が異なります。 DAC またはデータベースに関連付けられたインスタンスレベルのオブジェクト (ログインなど) が、ウィザードによって削除されることはありません。

オプション データベース アクション
登録の削除 関連付けられているデータベースは、そのまま保持されます。
データベースのデタッチ 関連付けられたデータベースはデタッチされます。 データベース エンジンのインスタンスはデータベースを参照できませんが、データ ファイルとログ ファイルはそのまま保持されます。
データベースの削除 関連付けられたデータベースは削除されます。 データ ファイルとログ ファイルも削除されます。

制限事項と制約事項

DAC を削除した後に DAC 定義のメタデータ、またはデータベースを自動的に復元するメカニズムはありません。 DAC インスタンスを手動で再構築する方法は、削除オプションによって異なります。

オプション DAC インスタンスの再構築方法
登録の削除 同じ場所に残っているデータベースから DAC を登録します。
データベースのデタッチ sp_attachdb または SQL Server Management Studio を使用してデータベースを再アタッチして、データベースから新しい DAC インスタンスを登録します。
データベースの削除 DAC が削除される前に作成された完全バックアップからデータベースを復元して、データベースから新しい DAC インスタンスを登録します。

警告

復元または再アタッチされたデータベースから DAC を登録して DAC インスタンスを再構築しても、サーバーの選択ポリシーなど、元の DAC の一部は再作成されません。

アクセス許可

DAC を削除できるのは、 sysadmin または serveradmin 固定サーバー ロールのメンバーか、データベース所有者のみです。 あらかじめ登録されたシステム管理者アカウント sa もこのウィザードを起動できます。

データ層アプリケーションの削除ウィザードの使用

ウィザードを使用して DAC を削除するには

  1. オブジェクト エクスプローラーで、削除する DAC を含んだインスタンスのノードを展開します。

  2. [管理] ノードを展開します。

  3. [データ層アプリケーション] ノードを展開します。

  4. 削除する DAC を右クリックし、[データ層アプリケーションの削除] をクリックします。

  5. ウィザードの各ダイアログの手順を実行します。

    1. はじめに

    2. 方法の選択

    3. まとめ

    4. データ層アプリケーションの削除

[説明] ページ

このページでは、データ層アプリケーションを削除する手順について説明します。

[次回からこのページを表示しない] : 今後このページを表示しないようにするには、このチェック ボックスをオンにします。

[次へ]>: [方法の選択] ページに進みます。

[キャンセル] : データ層アプリケーションもデータベースも削除することなくウィザードを終了します。

データ層アプリケーションの削除ウィザードの使用

[方法の選択] ページ

削除する DAC に関連付けられているデータベースの処理オプションを指定するには、このページを使用します。

[登録の削除] : データ層アプリケーションを定義しているメタデータを削除しますが、関連付けられたデータベースはそのまま保持されます。

[データベースのデタッチ] : データ層アプリケーションを定義しているメタデータを削除して、関連付けられたデータベースをデタッチします。

データベース エンジンのインスタンスはデータベースを参照できなくなりますが、データ ファイルとログ ファイルはそのまま保持されます。

[データベースの削除] : DAC を定義しているメタデータと、関連付けられたデータベースを削除します。

データベースのデータ ファイルとログ ファイルは、完全に削除されます。

< [戻る] : 概要 ページに進みます。

[次へ]> : [概要] ページに進みます。

[キャンセル] : DAC もデータベースも削除することなくウィザードを終了します。

データ層アプリケーションの削除ウィザードの使用

[概要] ページ

このページでは、DAC インスタンスの削除時にウィザードが行うアクションを確認します。

[選択内容の概要の確認] : ボックスに表示されている DAC、データベース、および削除方法を確認します。 情報が正しい場合は、 [次へ] または [完了] をクリックして DAC を削除します。 DAC とデータベースの情報が正しくない場合は、 [キャンセル] をクリックしてから正しい DAC を選択します。 削除方法が正しくない場合は、 [戻る] をクリックして [方法の選択] ページに戻り、別の方法を選択します。

< [戻る] : 方法の選択 ページに戻り、別の削除方法を選択します。

[次へ]>: 前のページで選択した方法で DAC インスタンスを削除して、[データ層アプリケーションの削除] ページに進みます。

[キャンセル] : DAC インスタンスを削除することなくウィザードを終了します。

データ層アプリケーションの削除ウィザードの使用

[データ層アプリケーションの削除] ページ

このページには、削除操作の成功または失敗が表示されます。

[DAC の削除] : DAC インスタンスを削除するために行った各アクションの成功または失敗が表示されます。 内容を確認して、各アクションの成功または失敗を判断します。 エラーが発生したアクションには、 [結果] 列にリンクが表示されます。 そのアクションのエラーのレポートを表示するには、リンクをクリックします。

[レポートの保存] : 削除レポートを HTML ファイルに保存します。 ファイルには、アクションで発生したすべてのエラーを含む、各アクションのステータスが報告されます。 既定のフォルダーは、Windows アカウントの Documents フォルダーにある SQL Server Management Studio\DAC Packages フォルダーです。

[完了] : ウィザードを終了します。

データ層アプリケーションの削除ウィザードの使用

PowerShell の使用

  1. SMO サーバー オブジェクトを作成し、削除する DAC を含んだインスタンスに設定します。

  2. ServerConnection オブジェクトを開いて、同じインスタンスに接続します。

  3. add_DacActionStarted および add_DacActionFinished を使用して、DAC アップグレード イベントをサブスクライブします。

  4. 削除する DAC を指定します。

  5. どの削除オプションが適切かに応じて、3 つの例のいずれかを使用します。

    • DAC 登録を削除し、データベースをそのままにするには、Unmanage メソッドを使用します。
    • DAC 登録を削除し、データベースをデタッチするには、Uninstall メソッドを使用し、DetachDatabase を指定します。
    • DAC 登録を削除し、データベースを削除するには、Uninstall メソッドを使用し、DropDatabase を指定します。

DAC を削除してデータベースを終了する

次の例では、Unmanage メソッドを使用して <myApplication> という名前の DAC を削除します。これにより、DAC は削除されますが、データベースはそのまま残ります。

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$server = Get-Item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($server.ConnectionContext.SqlConnectionObject)  
$serverConnection.Connect()  
$dacStore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)  
  
## 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})  
  
## Specify the DAC to delete.  
$dacName  = "<myApplication>"  
  
## Only delete the DAC definition from msdb, the associated database remains active.  
$dacStore.Unmanage($dacName)  

DAC を削除し、データベースをデタッチする

次の例では、Uninstall メソッドを使用して <myApplication> という名前の DAC を削除します。これにより、DAC は削除され、データベースはデタッチされます。

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$server = Get-Item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($server.ConnectionContext.SqlConnectionObject)  
$serverConnection.Connect()  
$dacStore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)  
  
## 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})  
  
## Specify the DAC to delete.  
$dacName  = "<myApplication>"  
  
## Delete the DAC definition from msdb and detach the associated database.  
$dacStore.Uninstall($dacName, [Microsoft.SqlServer.Management.Dac.DacUninstallMode]::DetachDatabase)  

DAC を削除し、データベースをドロップする

次の例では、Uninstall メソッドを使用して <myApplication> という名前の DAC を削除します。これにより、DAC は削除され、データベースはドロップされます。

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$server = Get-Item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($server.ConnectionContext.SqlConnectionObject)  
$serverConnection.Connect()  
$dacStore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)  
  
## 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})  
  
## Specify the DAC to delete.  
$dacName  = "<myApplication>"  
  
## Delete the DAC definition from msdb and drop the associated database.  
$dacStore.Uninstall($dacName, [Microsoft.SqlServer.Management.Dac.DacUninstallMode]::DropDatabase)  

参照

データ層アプリケーション
データ層アプリケーション
データ層アプリケーションの配置
データベースを DAC として登録する方法
SQL Server データベースのバックアップと復元
データベースのデタッチとアタッチ (SQL Server)