データ層アプリケーションを配置する方法

DAC パッケージから SQL Azure または SQL Server 2005 SP4 以降の既存のインスタンスにデータ層アプリケーション (DAC) を配置するには、データ層アプリケーションの配置ウィザードを使用します。 配置プロセスでは、msdb システム データベース (SQL Azure の master) に DAC 定義を格納することで DAC インスタンスを登録し、データベースを作成して、DAC で定義されたすべてのデータベース オブジェクトをそのデータベースに設定します。

作業を開始する準備

DAC は、SQL Server 2005 Service Pack 4 (SP4) 以降のデータベース エンジンインスタンスか、SQL Azure のインスタンスに配置できます。 クライアント ツールは、SQL Server 2008 R2 のもの (おそらく、DAC Framework 1.1) を使用する必要があります。 詳細については、「SQL Server オブジェクトとバージョンの DAC サポート」を参照してください。

データベース エンジンのマネージ インスタンスでは、ユーティリティ コレクション セットがインスタンスからユーティリティ コントロール ポイントに次回送信されるときに、配置された DAC が SQL Server ユーティリティに組み込まれます。 その後、DAC は、Management Studio のユーティリティ エクスプローラー[配置済みのデータ層アプリケーション] ノードに表示され、[配置済みのデータ層アプリケーション] 詳細ページで報告されます。

DAC パッケージの作成の詳細については、「データ層アプリケーションの実装」を参照してください。

必要条件

SQL Server 2005 SP4 以降に接続している場合、DAC を配置できるのは、sysadmin または serveradmin 固定サーバー ロールのメンバーか、dbcreator 固定サーバー ロールに存在する ALTER ANY LOGIN 権限を持つログインのみです。 あらかじめ登録された SQL Server システム管理者アカウント (sa) でも DAC を配置できます。 SQL Azure へのログインが含まれる DAC を配置するには、loginmanager ロールまたは serveradmin ロールのメンバーシップが必要です。 SQL Azure へのログインが含まれない DAC を配置するには、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 パッケージをデータベース エンジンの単一のインスタンスに複数回配置することはできますが、配置は一度に 1 つずつ実行する必要があります。 各配置に指定される DAC インスタンス名は、データベース エンジンのインスタンス内で一意である必要があります。

PowerShell による DAC の配置

次のコードを含む PowerShell スクリプト ファイル (.ps1) を作成します。

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

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
    ## 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)
    
    ## 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)
    
    ## 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})
    
    ## 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()
    
    ## 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 セッションから、または sqlps コマンド プロンプト ユーティリティを使用して、DeployDAC.ps1 を実行します。

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

Management Studio では、オブジェクト エクスプローラーでサーバーの下にある [管理] ノードへ移動し、[データ層アプリケーション] ノードを右クリックして、[データ層アプリケーションの配置] をクリックすることで、データ層アプリケーションの配置ウィザードを起動できます。

このウィザードによって、オブジェクト エクスプローラーの階層で選択したノードに関連付けられている、データベース エンジンのインスタンスに DAC が配置されます。 たとえば、ProductionServer01/Accounting という名前のインスタンスのサーバー ノードを右クリックしてウィザードを起動した場合は、DAC がそのデータベース エンジン インスタンスに配置されます。

次の一覧にあるリンクをクリックすると、ウィザードのページの詳細に移動できます。

  • [説明] ページ

  • [DAC パッケージの選択] ページ

  • [ポリシーの確認] ページ

  • [構成の更新] ページ

  • [概要] ページ

  • [配置] ページ

[説明] ページ

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

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

[次へ] : [DAC パッケージの選択] ページに進みます。

[キャンセル] : DAC を配置せずにウィザードを終了します。

[DAC パッケージの選択] ページ

このページでは、配置するデータ層アプリケーションを含む DAC パッケージを指定できます。 このページは、3 つの状態を遷移します。

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 サーバーの選択ポリシーは、省略可能で、Visual Studio で DAC を作成するときに割り当てられます。 このポリシーでは、サーバーの選択ポリシーのファセットを使用して、データベース エンジンのインスタンスで DAC をホストするために満たす必要がある条件を指定します。

[ポリシー条件の評価結果] : DAC 配置ポリシーの条件が満たされたかどうかを示す読み取り専用のレポートです。 各条件の評価結果が、レポートの各行に表示されます。

サーバーの選択ポリシー (オペレーティング システムのバージョン、言語、名前付きパイプの有効化、プラットフォーム、および TCP の有効化) は、DAC を SQL Azure に配置する場合は常に false となります。

[ポリシー違反を無視します]: ポリシー条件が満たされていない場合に配置を続行するには、このチェック ボックスを使用します。 すべての条件が満たされていなくても DAC を正常に操作できるようにする場合のみ、このチェック ボックスをオンにしてください。

[戻る] : [パッケージの選択] ページに戻ります。

[次へ] : [構成の更新] ページに進みます。

[キャンセル] : DAC を配置せずにウィザードを終了します。

[構成の更新] ページ

このページでは、配置された DAC インスタンスと配置によって作成されたデータベースの名前を指定し、データベース オプションを設定します。

[データベース名] : 配置によって作成されるデータベースの名前を指定します。 既定では、DAC の抽出元であるソース データベースの名前です。 この名前は、データベース エンジンのインスタンス内で一意であり、データベース エンジン識別子のルールに従っている必要があります。

データベース名を変更した場合、データ ファイルとログ ファイルの名前も新しいデータベース名に合わせて変更されます。

また、データベース名は、DAC インスタンスの名前としても使用されます。 インスタンス名は、オブジェクト エクスプローラー[データ層アプリケーション] ノードまたはユーティリティ エクスプローラー[配置済みのデータ層アプリケーション] ノードの下にある、DAC のノードに表示されます。

次のオプションは SQL Azure には適用されず、SQL Azure の配置時には表示されません。

[既定のデータベースの場所の使用]: データベースのデータ ファイルおよびログ ファイルをデータベース エンジン インスタンスの既定の場所に作成するには、このオプションを選択します。 ファイル名は、データベース名を使用して作成されます。

[データベース ファイルの指定] : データ ファイルおよびログ ファイルに別の場所または名前を指定するには、このオプションを選択します。

[データ ファイルのパスと名前] : データ ファイルの完全パスとファイル名を指定します。 このボックスには、既定のパスとファイル名が表示されます。 ボックス内の文字列を編集して既定値を変更するか、[参照] をクリックしてデータ ファイルを配置するフォルダーに移動してください。

[ログ ファイルのパスと名前] : ログ ファイルの完全パスとファイル名を指定します。 このボックスには、既定のパスとファイル名が表示されます。 ボックス内の文字列を編集して既定値を変更するか、[参照] をクリックしてログ ファイルを配置するフォルダーに移動してください。

[戻る] : [DAC パッケージの選択] ページに戻ります。

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

[キャンセル] : DAC を配置せずにウィザードを終了します。

[概要] ページ

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

[次の設定を使用して DAC を配置します。] : 表示された情報を確認し、実行されるアクションが正しいかどうかを確認します。 このウィンドウには、選択した DAC パッケージと、配置される DAC インスタンス用に選択した名前が表示されます。 また、DAC に関連付けられたデータベースを作成する際に使用される設定も表示されます。

[戻る] : [構成の更新] ページに戻り、選択内容を変更します。

[次へ] : DAC を配置し、[DAC の配置] ページに結果を表示します。

[キャンセル] : DAC を配置せずにウィザードを終了します。

[配置] ページ

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

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

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

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

変更履歴

変更内容

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