データベースから DAC を抽出する方法

データ層アプリケーションの抽出ウィザードまたは Windows PowerShell スクリプトを使用すると、既存の SQL Server データベースからデータ層アプリケーション (DAC) パッケージを抽出できます。 抽出プロセスでは、データベース オブジェクトの定義とそれに関連するインスタンスレベルの要素を格納した DAC パッケージ ファイルが作成されます。 たとえば、DAC パッケージ ファイルには、データベース テーブル、ストアド プロシージャ、ビュー、ユーザー、およびデータベース ユーザーにマップされているログインが含まれます。

SQL Azure または SQL Server 2005 Service Pack 4 (SP4) 以降のインスタンスに存在するデータベースから DAC を抽出できます。

データ層アプリケーションの抽出ウィザードでは、データベース エンジンの現在のインスタンスの DAC 定義が登録されません。 DAC の登録の詳細については、「データベースを DAC として登録する方法」を参照してください。

PowerShell による DAC の抽出

スクリプトの作成と実行

  1. ExtractDAC.ps1 ファイルを作成します。

  2. SMO サーバー オブジェクトを作成し、DAC を抽出するデータベースが含まれているインスタンスにそのオブジェクトを設定するためのコードを追加します。 この例では、サーバー オブジェクトをローカル コンピューター上の既定のインスタンスに設定しています。

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
  3. データベースを指定するためのコードを追加します。 この例では、MyDB というデータベースを指定しています。

    ## Specify the database to extract to a DAC.
    $dbname = "MyDB"
    
  4. DAC のメタデータを指定します。 この例では、DAC 名、バージョン、および説明を指定しています。

    ## Specify the DAC metadata.
    $applicationname = "MyApplication"
    $version = "1.0.0.0"
    $description = "This DAC defines the database used by my application."
    
  5. 抽出された DAC パッケージ ファイルのパスとファイル名を指定します。

    ## Specify the location and name for the extracted DAC package.
    $dacpacPath = "C:\MyDACs\MyApplication.dacpac"
    
  6. 上で指定された情報を使用して Extract メソッドを実行するためのコードを追加します。

    ## Extract the DAC.
    $extractionunit = New-Object Microsoft.SqlServer.Management.Dac.DacExtractionUnit($srv, $dbname, $applicationname, $version)
    $extractionunit.Description = $description
    $extractionunit.Extract($dacpacPath)
    
  7. SQL Server PowerShell スナップインを読み込んだ PowerShell セッションから、または sqlps コマンド プロンプト ユーティリティを使用して、ExtractDAC.ps1 を実行します。

データ層アプリケーションの抽出ウィザード

データ層アプリケーションの抽出ウィザードを開くには

  1. オブジェクト エクスプローラーで、[データベース] を展開してデータベースを右クリックし、[タスク] をポイントして [データ層アプリケーションの抽出] をクリックします。

  2. ウィザードの手順に従って、選択したデータベースに基づく DAC パッケージを作成します。 詳細については、「データ層アプリケーションの抽出ウィザードの F1 ヘルプ」を参照してください。

変更履歴

変更内容

PowerShell の使用についてのセクションを追加しました。