DAC パッケージの検証Validate a DAC Package

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

DAC パッケージを運用環境に配置する前にパッケージの内容を確認し、既存の DAC をアップグレードする前にアップグレード処理を検証するようにしてください。It is a good practice to review the contents of a DAC package before deploying it in production, and to validate the upgrade actions before upgrading an existing DAC. これは、特に、外部で開発されたパッケージを配置する場合に当てはまります。This is especially true when deploying packages that were not developed in your organization.

  1. 作業を開始する準備: 前提条件Before you begin: Prerequisites

  2. DAC のアップグレード: DAC の内容の表示データベースの変更の表示アップグレード処理の表示Compare DACsTo upgrade a DAC, using: View the Contents of a DAC, View Database Changes, View Upgrade Actions, Compare DACs

注意

この記事の手順やコード例の中で、古い情報や間違っている情報を見つけた場合は、ぜひお知らせください。If you find something outdated or incorrect in this article, such as on a step or in a code example, please tell us. このページの下部にある [フィードバック] セクション内で [このページ] ボタンをクリックしてください。You can click the This page button in the Feedback section at the bottom of this page. 修正内容がわかっている場合は、このページの上部にある編集用の鉛筆アイコンをクリックしてから、GitHub ページ上の鉛筆アイコンをクリックしてください。Or better, if you know the fix, you can click the Edit-pencil icon at the top of this page, and then click the pencil icon on the GitHub page. ありがとうございます。Thank you!

前提条件Prerequisites

ソースが不明または信頼されていない DAC パッケージは配置しないことをお勧めします。We recommend that you do not deploy a DAC package from unknown or untrusted sources. こうした DAC には、意図しない Transact-SQLTransact-SQL コードを実行したり、スキーマを変更してエラーを発生させるような、悪意のあるコードが含まれている可能性があります。Such DACs could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema. DAC のソースが不明または信頼されていない場合は、使用する前に、データベース エンジンDatabase Engineの隔離されたテスト インスタンスに DAC を配置し、データベースに対して DBCC CHECKDB (Transact-SQL) を実行してください。また、ストアド プロシージャやその他のユーザー定義コードなど、データベースのコードを確認してください。Before you use a DAC from an unknown or untrusted source, deploy it on an isolated test instance of the データベース エンジンDatabase Engine, run DBCC CHECKDB (Transact-SQL) on the database, and also examine the code, such as stored procedures or other user-defined code, in the database.

DAC の内容の表示View the Contents of a DAC

データ層アプリケーション (DAC) パッケージの内容を表示する方法は 2 つあります。There are two mechanisms for viewing the contents of a data-tier application (DAC) package. 1 つは、SQL Server 開発者ツールの DAC プロジェクトに DAC パッケージをインポートする方法です。You can import the DAC package to a DAC project in SQL Server Developer Tools. もう 1 つは、パッケージの内容をフォルダーにアンパックする方法です。You can unpack the contents of the package to a folder.

SQL Server 開発者ツールでの DAC の表示View a DAC in SQL Server Developer Tools

  1. [ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。Open the File menu, select New, and then select Project....

  2. [SQL Server] プロジェクト テンプレートを選択し、 [名前][場所] 、および [ソリューション名] を指定します。Select the SQL Server project template, and specify a Name, Location, and Solution name.

  3. ソリューション エクスプローラーでプロジェクト ノードを右クリックし、 [プロパティ] をクリックします。In Solution Explorer, right click the project node and select Properties....

  4. [プロジェクトの設定] タブの [出力の種類] セクションで [データ層アプリケーション (.dacpac File)] チェック ボックスをオンにし、プロパティ ダイアログ ボックスを閉じます。On the Project Settings tab, in the Output Types section, select the Data-tier Application (.dacpac File) check box, and then close the properties dialog.

  5. ソリューション エクスプローラーでプロジェクト ノードを右クリックし、 [データ層アプリケーションのインポート] をクリックします。In Solution Explorer, right click the project node and select Import Data-tier Application....

  6. ソリューション エクスプローラー を使用して、サーバーの選択ポリシーや配置前スクリプトと配置後スクリプトなど、DAC 内のすべてのファイルを開くことができます。Use Solution Explorer to open all of the files in the DAC, such as the server selection policy and the pre- and post-deployment scripts.

  7. スキーマ ビュー を使用すると、スキーマ内のすべてのオブジェクトを確認できます。特に、関数やストアド プロシージャなどのオブジェクトのコードを確認します。Use the Schema View to review all of the objects in the schema, particularly reviewing the code in objects such as functions or stored procedures.

フォルダーでの DAC の表示View a DAC in a Folder

  • Unpack a DAC Package」での指示に従って、DAC パッケージをフォルダーにアンパックします。Unpack the DAC package into a folder by following the instructions in Unpack a DAC Package.

  • Transact-SQLTransact-SQL スクリプトの内容を表示するには、 データベース エンジンDatabase EngineManagement StudioManagement Studioクエリ エディターでスクリプトを開きます。View the contents of the Transact-SQLTransact-SQL scripts by opening them in the データベース エンジンDatabase Engine Query Editor in Management StudioManagement Studio.

  • テキスト ファイルの内容を表示するには、メモ帳などのツールを使用します。View the contents of the text files in tools such as notepad.

データベースの変更の表示View Database Changes

現在のバージョンの DAC を実稼働環境に配置した後で、関連付けられているデータベースが直接変更され、その変更内容が新しいバージョンの DAC で定義されているスキーマと矛盾する場合があります。After the current version of a DAC was deployed to production, changes may have been made directly to the associated database that might conflict with the schema defined in a new version of the DAC. 新しいバージョンの DAC にアップグレードする前に、そのような変更がデータベースに対して行われたかどうかを確認してください。Before upgrading to a new version of the DAC, check to see if such changes have been made to the database.

ウィザードの使用によるデータベースの変更の表示View Database Changes by Using a Wizard

  1. 現在配置されている DAC と、新しいバージョンの DAC を含む DAC パッケージを指定して、 データ層アプリケーションのアップグレード ウィザードを実行します。Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. [変更の検出] ページで、データベースに対する変更のレポートを確認します。On the Detect Change page, review the report of the changes that have been made to the database.

  3. アップグレードを続行しない場合は、 [キャンセル] をクリックします。Select Cancel if you do not want to continue with the upgrade.

  4. ウィザードの使用方法については、「 データ層アプリケーションのアップグレード」を参照してください。For more information on using the wizard, see Upgrade a Data-tier Application.

PowerShell の使用によるデータベースの変更の表示View Database Changes by Using PowerShell

  1. SMO サーバー オブジェクトを作成し、表示する DAC を含んだインスタンスに設定します。Create a SMO Server object and set it to the instance that contains the DAC to be viewed.

  2. ServerConnection オブジェクトを開いて、同じインスタンスに接続します。Open a ServerConnection object and connect to the same instance.

  3. DAC の名前を変数で指定します。Specify the DAC name in a variable.

  4. GetDatabaseChanges() メソッドを使用して ChangeResults オブジェクトを取得し、そのオブジェクトをテキスト ファイルにパイプして、新しいオブジェクト、削除したオブジェクト、および変更したオブジェクトを含む簡単なレポートを生成します。Use the GetDatabaseChanges() method to retrieve a ChangeResults object, and pipe the object to a text file to generate a simple report of new, deleted, and changed objects.

データベースの変更の表示の例 (PowerShell)View Database Changes Example (PowerShell)

データベースの変更の表示の例 (PowerShell)View Database Changes Example (PowerShell)

次の例は、MyApplicaiton という名前の配置された DAC で行われた、データベースのすべての変更のレポートを生成します。The following example reports any database changes that have been made in a deployed DAC named MyApplicaiton.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## 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)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

アップグレード処理の表示View Upgrade Actions

DAC パッケージの新しいバージョンを使用して前の DAC パッケージから配置された DAC をアップグレードする前に、アップグレード中に実行される Transact-SQLTransact-SQL ステートメントを含むレポートを生成して、ステートメントを確認することができます。Before using a new version of a DAC package to upgrade a DAC that was deployed from an earlier DAC package, you can generate a report that contains the Transact-SQLTransact-SQL statements that will be run during the upgrade, and then review the statements.

ウィザードの使用によるアップグレードの処理のレポート生成Report Upgrade Actions by Using a Wizard

  1. 現在配置されている DAC と、新しいバージョンの DAC を含む DAC パッケージを指定して、 データ層アプリケーションのアップグレード ウィザードを実行します。Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. [概要] ページで、アップグレード処理のレポートを確認します。On the Summary page, review the report of the upgrade actions.

  3. アップグレードを続行しない場合は、 [キャンセル] をクリックします。Select Cancel if you do not want to continue with the upgrade.

  4. ウィザードの使用方法については、「 データ層アプリケーションのアップグレード」を参照してください。For more information on using the wizard, see Upgrade a Data-tier Application.

PowerShell の使用によるアップグレードの処理のレポート生成Report Upgrade Actions by Using PowerShell

  1. SMO サーバー オブジェクトを作成し、配置された DAC を含んだインスタンスに設定します。Create a SMO Server object and set it to the instance that contains the deployed DAC.

  2. ServerConnection オブジェクトを開いて、同じインスタンスに接続します。Open a ServerConnection object and connect to the same instance.

  3. System.IO.File を使用して、DAC パッケージ ファイルを読み込みます。Use System.IO.File to load the DAC package file.

  4. DAC の名前を変数で指定します。Specify the DAC name in a variable.

  5. GetIncrementalUpgradeScript() メソッドを使用して、アップグレードで実行される Transact-SQL ステートメントのリストを取得し、リストをテキスト ファイルにパイプします。Use the GetIncrementalUpgradeScript() method to get a list of the Transact-SQL statements an upgrade would run, and pipe the list to a text file.

  6. DAC パッケージ ファイルの読み取りに使用するファイル ストリームを閉じます。Close the file stream used to read the DAC package file.

アップグレード処理の表示の例 (PowerShell)View Upgrade Actions Example (PowerShell)

アップグレード処理の表示の例 (PowerShell)View Upgrade Actions Example (PowerShell)

次の例は、MyApplicaiton という名前の DAC を MyApplication2017.dacpac ファイルで定義されているスキーマにアップグレードするために実行される Transact-SQL ステートメントのレポートを生成します。The following example reports the Transact-SQL statements that would be run to upgrading a DAC named MyApplicaiton to the schema defined in a MyApplication2017.dacpac file.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## 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)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

Compare DACsCompare DACs

DAC をアップグレードする前に、現在の DAC と新しい DAC に、データベースレベルおよびインスタンスレベルでオブジェクトにどんな相違があるか確認してください。Before upgrading a DAC, it is a good practice to review the differences in the database and instance-level objects between the current and new DACs. 現在の DAC パッケージのコピーがない場合は、現在のデータベースからパッケージを抽出できます。If you do not have a copy of the package for the current DAC, you can extract a package from the current database.

SQL Server 開発者ツールで両方の DAC パッケージを DAC プロジェクトにインポートする場合は、スキーマ比較ツールを使用して 2 つの DAC 間の相違を分析できます。If you import both DAC packages into DAC projects in SQL Server Developer Tools, you can use the Schema Compare tool to analyze the differences between the two DACs.

または、DAC を別々のフォルダーにアンパックします。Alternatively, unpack the DACs into separate folders. その後、WinDiff ユーティリティなどの比較ツールを使用して、相違を分析できます。You can then use a difference tool, such as the WinDiff utility, to analyze the differences.

参照See Also

[データ層アプリケーション] Data-tier Applications
データ層アプリケーションの配置 Deploy a Data-tier Application
データ層アプリケーションのアップグレードUpgrade a Data-tier Application