次の方法で共有


データ層アプリケーションをアップグレードする方法

データ層アプリケーションのアップグレード ウィザードまたは Windows PowerShell スクリプトを使用すると、現在配置されているデータ層アプリケーション (DAC) のスキーマとプロパティを、新しいバージョンの DAC で定義されているスキーマとプロパティに一致するように変更できます。

インプレース アップグレードとサイド バイ サイド アップグレード

DAC アップグレードには次の 2 種類があります。

  • サイド バイ サイド アップグレードは、既存のデータベースのコピーを保持しながら、新しいバージョンの DAC で定義されたスキーマを含む新しいデータベースを構築します。 次に、古いデータベースから新しいデータベースにデータをコピーします。

  • インプレース アップグレードは、既存のデータベースのスキーマを新しい DAC バージョンで定義されているスキーマに一致するように変更します。

SQL Server 2008 R2 と Microsoft Visual Studio 2010 には、サイド バイ サイド アップグレードのみをサポートする DAC フレームワーク 1.0 が含まれています。 サイド バイ サイド アップグレードでは SQL Azure をサポートしていません。 SQL Server 2008 R2 Service Pack 1 (SP1) と Visual Studio 2010 SP1 には、新しい DAC フレームワーク 1.1 が含まれています。DAC フレームワーク 1.1 によって、SQL Azure およびデータベース エンジンのインスタンスにインプレース アップグレードが導入されます。 DAC フレームワーク 1.1 の詳細については、「SQL Server オブジェクトとバージョンの DAC サポート」を参照してください。

元のバージョンの DAC アップグレード ウィザードは、DAC フレームワーク 1.0 を使用してサイド バイ サイド アップグレードを実行しました。 SQL Server 2008 R2 SP1 に含まれているバージョンのウィザードでは、インプレース アップグレードが実行されます。

SQL Server 2008 R2 ユーザーは、SQL Server 2008 R2 SP1 をインストールすることで、新しいウィザードと DAC フレームワーク 1.1 の両方にアップグレードできます。

アップグレードのための準備

アップグレードを開始する前に、データベースの完全バックアップを行ってください。 アップグレード時にエラーが発生し、すべての更新データをロールバックできない場合は、バックアップの復元が必要になる場合があります。

DAC パッケージとアップグレード操作を検証するためのいくつかの操作を行う必要があります。 これらのチェックの実行方法の詳細については、「DAC パッケージを検証する方法」を参照してください。

  • アップグレード時には、ソースが不明または信頼されていない DAC パッケージは使用しないことをお勧めします。 こうした DAC には、意図しない Transact-SQL コードを実行したり、スキーマを変更してエラーを発生させるような、悪意のあるコードが含まれている可能性があります。 DAC のソースが不明または信頼されていない場合は、使用する前に、DAC をアンパックして、ストアド プロシージャやその他のユーザー定義コードなどのコードも確認してください。

  • 元の DAC の配置後に現在のデータベースに変更が加えられている場合は、一部の変更によってアップグレードが正常に完了しなかったり、アップグレードによって一部の変更が削除されたりすることがあります。 最初にデータベースで行われた変更内容のレポートを生成して確認してください。

  • 更新によって実行されるスキーマの変更の一覧を生成し、問題がないかどうかを確認してください。

DAC アップグレード オプションの選択

インプレース アップグレードには 4 つのアップグレード オプションがあります。

[データ損失を無視する] – True の場合、一部の操作によってデータが失われてもアップグレードは続行されます。 False の場合、これらの操作によってアップグレードは終了します。 たとえば、現在のデータベースにあるテーブルが新しい DAC のスキーマに存在しない場合は、True に指定するとテーブルは削除されます。 既定値は True です。

[変更時にブロック] - True の場合、データベース スキーマが前の DAC で定義された内容と異なるとアップグレードは終了します。 False の場合、変更が検出されても、アップグレードは続行されます。 既定値は False です。

[失敗時にロールバック] - True の場合、アップグレードはトランザクションに含まれ、エラーが発生すると、ロールバックが試行されます。 False の場合、すべての変更が実行時にコミットされます。エラーが発生すると、データベースの前のバックアップの復元が必要になる場合があります。 既定値は False です。

[ポリシーの検証をスキップ] - True の場合、DAC サーバー選択ポリシーは評価されません。 False の場合は、ポリシーが評価され、検証エラーがあるとアップグレードは終了します。 既定値は False です。

必要条件

DAC をアップグレードできるのは、sysadmin または serveradmin 固定サーバー ロールのメンバーか、dbcreator 固定サーバー ロールに存在する ALTER ANY LOGIN 権限を持つログインのみです。 ログインは既存のデータベースの所有者である必要があります。 あらかじめ登録された SQL Server システム管理者アカウント (sa) もこのウィザードを起動できます。

DAC パッケージ内のアプリケーション名は、現在配置されている DAC のアプリケーション名と一致している必要があります。 たとえば、現在の DAC のアプリケーション名が GeneralLedger の場合、アップグレードできるのは、アプリケーション名が GeneralLedger の DAC パッケージを使用する場合だけです。

ログイン パスワード

セキュリティを強化するために、SQL Server 認証のログインは、パスワードなしで DAC パッケージに格納されます。 パッケージが配置またはアップグレードされると、ログインは、生成されたパスワードを伴う無効なログインとして作成されます。 ログインを有効にするには、ALTER ANY LOGIN 権限を持つユーザーとしてログインし、ALTER LOGIN を使用してログインを有効にします。さらに、新しいパスワードを割り当て、そのパスワードを該当ユーザーに通知します。 Windows 認証ログインの場合、ログインのパスワードは SQL Server で管理されていないため、この操作は必要ありません。

領域に関する注意点

インプレース アップグレードの領域に関する主な注意点は、すべての変更をログ記録するための十分なトランザクション ログ領域があるということです。

サイド バイ サイド アップグレードでは、新しいデータベースを作成して既存のデータを新しいデータベースにコピーするだけでなく、配置済みの DAC のために現在のデータベースを保持します。 既存のデータベースと同じ大きさの新しいデータベースを保持するには、使用可能な十分な空きディスク領域が必要です。 サイド バイ サイド アップグレードを実行する前に、現在のデータベースのデータ量が新しいデータベースに収まる量であることを確認してください。 アップグレードによって作成されたデータベースには、CREATE DATABASE ステートメントによる既定のサイズ設定が適用されます。 既定では、1 つのデータ ファイルの初期サイズは 3 MB で、1 MB ずつ無制限に増加します。また、1 つのログ ファイルの初期サイズは 1 MB で、最大サイズは 2 GB に制限されています。

サイド バイ サイド データベース オプション

サイド バイ サイド アップグレードでは、配置フェーズで作成されたデータベースには、CREATE DATABASE ステートメントによる既定の設定がすべて適用されます。ただし、次の設定は除きます。

  • データベースの照合順序および互換性レベルは、DAC パッケージで定義された値に設定されます。 Visual Studio で DAC プロジェクトから構築されたパッケージでは、DAC プロジェクトに設定された値が使用されます。 既存のデータベースから抽出されたパッケージでは、元のデータベースの値が使用されます。

  • 一部のデータベース設定 (データベース名やファイル パスなど) は、[構成の更新] ページで調整できます。

TRUSTWORTHY、DB_CHAINING、HONOR_BROKER_PRIORITY など、データベース オプションによっては、配置作業中の調整はできない場合があります。 ファイル グループの数、ファイルの数やサイズなどの物理プロパティは、配置作業中に変更することはできません。 配置が完了した後は、ALTER DATABASE ステートメント、SQL Server Management Studio、または SQL Server PowerShell を使用して、データベースを調整できます。 詳細については、「データベースの変更」を参照してください。

PowerShell による DAC のインプレース アップグレード

この例では DAC フレームワーク 1.1 の IncrementalUpgrade() メソッドを使用して、DAC のインプレース アップグレードを実行します。 このメソッドは SQL Server または SQL Azure で DAC をアップグレードします。 新しいフレームワークを入手するには、SQL Server 2008 R2 SP1 をインストールする方法をお勧めします。

次のコードを含む PowerShell スクリプト ファイル (IncrementalUpgradeDAC.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 パッケージ ファイルを読み込むためのコードを追加します。 この例では、MyApplicationVNext.dacpac ファイルを読み込んでいます。

    ## Load the DAC package file.
    $dacpacPath = "C:\MyDACs\MyApplicationVNext.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\MyApplicationVNext.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 をアップグレードし、DAC パッケージ ファイルを閉じるコードを追加します。

    ## Upgrade the DAC and create the database.
    $dacName  = "MyApplication"
    ## Set the upgrade options.
    $upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions
    $upgradeProperties.blockonchanges = $true
    $upgradeProperties.ignoredataloss = $false 
    $upgradeproperties.rollbackonfailure = $true
    $upgradeProperties.skippolicyvalidation = $false
    ## Do not set IgnoreDrift, replaced by BlockOnChanges.
    
    ## Upgrade the DAC and create the database.
    $dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)
    
    $fileStream.Close()
    
    ## Upgrade the DAC and create the database.
    $dacName  = "MyApplication"
    ## Set the upgrade options.
    $upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions
    $upgradeProperties.blockonchanges = $true
    $upgradeProperties.ignoredataloss = $false 
    $upgradeproperties.rollbackonfailure = $true
    $upgradeProperties.skippolicyvalidation = $false
    ## Do not set IgnoreDrift, replaced by BlockOnChanges.
    
    ## Upgrade the DAC and create the database.
    $dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)
    
    $fileStream.Close()
    

SQL Server PowerShell スナップインを読み込んだ PowerShell セッションから、または sqlps コマンド プロンプト ユーティリティを使用して、IncrementalUgradeDAC.ps1 を実行します。

ウィザードによる DAC のインプレース アップグレード

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

注記注意

SQL Server 2008 R2 の元のバージョンの DAC アップグレード ウィザードはサイド バイ サイド アップグレードを実行しますが、これは、SQL Azure ではサポートされていません。 ここでは、SQL Server 2008 R2 SP1 に含まれている新しいバージョンのウィザードを使用して説明します。新しいバージョンのウィザードでは、インプレース アップグレードが実行されます。

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

  • [説明] ページ

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

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

  • [変更の検出] ページ

  • [アップグレード計画の確認] ページ

  • [概要] ページ

  • [DAC のアップグレード] ページ

[説明] ページ

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

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

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

[キャンセル] : DAC をアップグレードせずにウィザードを終了します。

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

このページでは、新しいバージョンのデータ層アプリケーションを含む DAC パッケージを指定します。 このページは、2 つの状態を遷移します。

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

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

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

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

[次へ] : [変更の検出] ページに進みます。

[キャンセル] : DAC をアップグレードせずにウィザードを終了します。

[変更の検出] ページ

このページでは、msdb 内の DAC メタデータに格納されているスキーマ定義とは異なるスキーマを作成する、データベースへの変更についてウィザードで確認した結果がレポートされます。 たとえば、最初に DAC が配置された後に、CREATE、ALTER または DROP ステートメントを使用してデータベースでオブジェクトを追加、変更、または削除した場合です。 このページでは、まず進捗状況バーが表示されてから、分析結果が表示されます。

[変更を検出しています。これには、数分間かかることがあります] : ウィザードでデータベースの現在のスキーマと DAC 定義のオブジェクトの間で相違点がチェックされるときに、進捗状況バーが表示されます。

[変更の検出結果] : 分析が完了したことを示し、結果が下に表示されます。

[データベース <DatabaseName> は変更されていません] : ウィザードで、データベースで定義されているオブジェクトと DAC 定義の対応するオブジェクトの間で相違点が検出されませんでした。

[データベース <DatabaseName> が変更されました] : ウィザードで、データベースのオブジェクトと DAC 定義の対応するオブジェクトの間で変更点が検出されました。

[変更が失われる可能性がありますが続行します] : 現在のデータベース内のオブジェクトやデータの一部が新しいデータベースに存在しない場合があることがわかっていて、アップグレードを続行することを指定します。 このボタンは、変更レポートの分析が完了し、新しいデータベースで必要なオブジェクトやデータを手動で転送するための手順がわかっている場合にのみクリックしてください。 わからない場合は、[レポートの保存] をクリックして変更レポートを保存し、[キャンセル] をクリックします。 レポートを分析して、アップグレードの完了後に必要なオブジェクトやデータを転送する方法を計画し、ウィザードを再起動します。 詳細については、「データ層アプリケーションのアップグレード」を参照してください。

[レポートの保存] : ウィザードで検出された、データベースのオブジェクトと DAC 定義の対応するオブジェクトの間の変更点のレポートを保存する場合に、このボタンをクリックします。 その後、レポートを確認し、アップグレードの完了後に、レポートに表示されたオブジェクトの一部またはすべてを新しいデータベースに組み込む操作を行う必要があるかどうかを判断できます。

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

[次へ] : [アップグレード計画の確認] ページに進みます。

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

[アップグレード計画の確認] ページ

このページでは、アップグレード プロセスで実行されるアクションを確認します。 アップグレードによって問題が発生しないことが確信できる場合のみ、アップグレードを続行してください。

[次のアクションを使用して DAC をアップグレードします。] : 表示された情報を確認し、実行されるアクションが正しいかどうかを確認します。 [アクション] 列には、アップグレードを行うために実行される Transact-SQL ステートメントなどのアクションが表示されます。 [データ損失] 列には、関連付けられたアクションによってデータが削除される可能性がある場合に、警告が表示されます。

[更新] : アクション リストを更新します。

[アクション レポートの保存] : アクション ウィンドウの内容を HTML ファイルに保存します。

[変更が失われる可能性がありますが続行します] : 現在のデータベース内のオブジェクトやデータの一部が新しいデータベースに存在しない場合があることがわかっていて、アップグレードを続行することを指定します。 このボタンは、変更レポートの分析が完了し、新しいデータベースで必要なオブジェクトやデータを手動で転送するための手順がわかっている場合にのみクリックしてください。 わからない場合は、[アクション レポートの保存] をクリックして変更レポートを保存し、[スクリプトの保存] をクリックして Transact-SQL スクリプトを保存してから、[キャンセル] をクリックします。 レポートとスクリプトを分析して、アップグレードの完了後に必要なオブジェクトやデータを転送する方法を計画し、ウィザードを再起動します。 詳細については、「データ層アプリケーションのアップグレード」を参照してください。

[スクリプトの保存] : アップグレードを実行するために使用される Transact-SQL ステートメントをテキスト ファイルに保存します。

[既定値に戻す] : オプションを false という既定値に戻します。

[戻る] : [変更の検出] ページに戻ります。

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

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

[概要] ページ

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

[次の設定を使用して DAC をアップグレードします。] : 表示された情報を確認し、実行されるアクションが正しいかどうかを確認します。 このウィンドウには、アップグレード対象として選択した DAC と、新しいバージョンの DAC が含まれている DAC パッケージが表示されます。 また、現在のバージョンのデータベースが現在の DAC 定義と同じかどうか、またはデータベースが変更されているかどうかも表示されます。

[戻る] : [変更の検出] ページに戻ります。

[次へ] : DAC を配置し、[DAC のアップグレード] ページに結果を表示します。

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

[DAC のアップグレード] ページ

このページには、アップグレード操作の成功または失敗が表示されます。

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

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

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

PowerShell を使用した DAC のサイド バイ サイド アップグレード

この例では DAC フレームワーク 1.0 の Upgrade() メソッドを使用して、DAC のサイド バイ サイド アップグレードを実行します。 Upgrade() メソッドは、次のバージョンの SQL Server で削除される予定で、SQL Azure をサポートしません。 DAC フレームワーク 1.1 の IncrementalUpgrade() メソッド (前述) を使用して、インプレース アップグレードを実行することをお勧めします。

サイド バイ サイド アップグレードには次の 2 つのアップグレード オプションがあります。

  • [IngoreDrift] - True の場合、変更が検出されても、アップグレードは続行されます。 False の場合、データベース スキーマが前の DAC で定義された内容と異なると、アップグレードは終了します。

  • [InvokeTSPolicy] - True の場合、DAC サーバー選択ポリシーが評価され、検証エラーがあるとアップグレードは終了します。 False の場合、ポリシーは評価されません。

インプレース アップグレードを実行するには、次のコードを含む PowerShell スクリプト ファイル (UpgradeDAC.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 パッケージ ファイルを読み込むためのコードを追加します。 この例では、MyApplicationVNext.dacpac ファイルを読み込んでいます。

    ## Load the DAC package file.
    $dacpacPath = "C:\MyDACs\MyApplicationVNext.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\MyApplicationVNext.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 パッケージ ファイルを閉じるためのコードを追加します。

    ## Upgrade the DAC and create the database.
    $dacName  = "MyApplication"
    $evaluateTSPolicy = $true
    $ignoreDriftOption = $true
    $upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions($evaluateTSPolicy, $ignoreDriftOption)
    $dacstore.Upgrade($dacName, $dacType, $upgradeProperties)
    $fileStream.Close()
    
    ## Upgrade the DAC and create the database.
    $dacName  = "MyApplication"
    $evaluateTSPolicy = $true
    $ignoreDriftOption = $true
    $upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions($evaluateTSPolicy, $ignoreDriftOption)
    $dacstore.Upgrade($dacName, $dacType, $upgradeProperties)
    $fileStream.Close()
    

SQL Server PowerShell スナップインを読み込んだ PowerShell セッションから、または sqlps コマンド プロンプト ユーティリティを使用して、UgradeDAC.ps1 を実行します。

変更履歴

変更内容

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

インプレース アップグレードと DAC フレームワーク 1.1 Feature Pack に関する説明を追加しました。

SQL Server 2008 R2 SP1 には、DAC フレームワーク 1.1 とインプレース アップグレードを実行する新しい DAC アップグレード ウィザードの両方が含まれます。