データ層アプリケーションのエクスポート

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

展開されているデータ層アプリケーション (DAC) またはデータベースをエクスポートすると、エクスポート ファイルが作成されます。このファイルには、データベース内のオブジェクトの定義に加え、テーブル内のすべてのデータが含まれています。 さらに、このエクスポート ファイルをデータベース エンジンの別のインスタンスまたは Azure SQL データベースにインポートすることもできます。 エクスポートとインポートという操作を組み合わせることで、DAC をインスタンス間で移行したりアーカイブを作成したりすることが可能です。また、SQL データベースにデプロイされているデータベースのオンプレミス用コピーを作成することもできます。

前提条件

エクスポート プロセスでは、2 つの段階を経て DAC エクスポート ファイルが構築されます。

  1. エクスポートではエクスポート ファイル (BACPAC ファイル) に DAC 定義が構築されます。DAC の抽出時には DAC パッケージ ファイルに DAC 定義が構築されますが、これと同様の処理が行われます。 エクスポートされた DAC 定義には、現在のデータベース内のすべてのオブジェクトが含まれます。 あるデータベースにエクスポート プロセスが実行されたとします。このデータベースは最初に DAC から展開されましたが、展開後に変更が加えられた状態です。 その場合にエクスポートされる定義は、元の DAC で定義されたものではなく、変更されたデータベース内のオブジェクト セットと一致します。

  2. データベース内のすべてのテーブルからデータが一括コピーされて、エクスポート ファイルに組み込まれます。

エクスポート プロセスでは、DAC バージョンが 1.0.0.0 に設定され、エクスポート ファイル内の DAC の説明は空の文字列に設定されます。 データベースが DAC から展開された場合、エクスポート ファイル内の DAC 定義には、元の DAC に割り当てられた名前が格納されます。 それ以外の場合は、DAC 名にはデータベースの名前が設定されます。

アクセス許可

DAC をエクスポートするには、少なくとも ALTER ANY サインインとデータベース レベルの VIEW DEFINITION アクセス許可と sys.sql_expression_dependencies に対する SELECT アクセス許可が必要です。 このタスクは、securityadmin 固定サーバー ロールと、DAC のソース データベース内の固定データベース ロール database_owner メンバーシップを保持している個人に対して達成できます。 さらに、DAC のエクスポートは、sysadmin 固定サーバー ロールの一部であるユーザー、または sa という名前の組み込みの SQL Server システム管理者アカウントにアクセスできるユーザーに適しています。

Azure SQL データベースで、データベースごとに、すべてのテーブルまたは特定のテーブルに対する VIEW DEFINITION および SELECT アクセス許可を付与する必要があります。

データ層アプリケーションのエクスポート ウィザードの使用

ウィザードを使用して DAC をエクスポートするには

  1. オンプレミスでも SQL Database でも、SQL Server のインスタンスに接続します。

  2. オブジェクト エクスプローラーで、DAC のエクスポート元のインスタンスのノードを展開します。

  3. データベース名を右クリックします。

  4. [タスク] を選び、[データ層アプリケーションのエクスポート] を選択します。

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

[概要] ページ

このページには、データ層アプリケーションのエクスポート ウィザードの手順が表示されます。

[オプション]

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

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

[キャンセル]: 操作を取り消し、ウィザードを閉じます。

データ層アプリケーションのエクスポートの概要ページを示すスクリーンショット。

[エクスポートの設定] ページ

このページを使用して、BACPAC ファイルを作成する場所を指定します。

  • [ローカル ディスクに保存] : BACPAC ファイルをローカル コンピューター上のディレクトリに作成します。 [参照...] を選択してローカル コンピューター内を参照するか、用意されている領域にパスを指定します。 パス名には、ファイル名および .bacpac 拡張子を含める必要があります。

  • [Save to Azure]\(Azure に保存\): BACPAC ファイルを Azure コンテナーに作成します。 このオプションを検証するためには、Azure コンテナーに接続する必要があります。 このオプションでは、一時ファイル用のローカル ディレクトリを指定する必要もあります。 一時ファイルは、指定した場所に作成され、操作の完了後も残ります。

エクスポートするテーブルのサブセットを指定するには、 [詳細] オプションを使用します。

データ層アプリケーションの [エクスポートの設定] ページを示すスクリーンショット。

概要ページ

このページを使用すると、操作の指定ソースとターゲットの設定を確認できます。 指定した設定でエクスポート操作を実行するには、 [完了]を選択します。 エクスポート操作をキャンセルしてウィザードを終了するには、 [キャンセル]を選択します。

データ層のエクスポートの [概要] ページのスクリーンショット。

[進行状況] ページ

このページには、操作の進行状況を示す進行状況バーが表示されます。 詳細な状態を表示するには、 [詳細表示] を選択します。

[結果] ページ

このページでは、エクスポート操作の成功と失敗が報告され、各アクションの結果が示されます。 エラーが発生したアクションには、 [結果] 列にリンクが表示されます。 そのアクションのエラーのレポートを表示するには、リンクをクリックします。

データ層アプリケーションの [結果] ページを示すスクリーンショット。

[完了] を選択して、ウィザードを終了します。

.Net Framework アプリケーションの使用

.Net Framework アプリケーションで Export() メソッドを使用して DAC をエクスポートするには

  1. SMO サーバー オブジェクトを作成し、エクスポートする DAC が含まれたインスタンスにそれを設定します。

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

  3. Microsoft.SqlServer.Management.Dac.DacStore 型の Export メソッドを使用して、DAC をエクスポートします。 エクスポートする DAC の名前と、エクスポート ファイルの出力先となるフォルダーのパスを指定します。

制限事項と制約事項

DAC またはデータベースをエクスポートできるのは、SQL Database、または SQL Server 2005 (9.x) Service Pack 4 (SP4) 以降のデータベースに限られます。

DAC でサポートされていないオブジェクトまたはユーザーが含まれるデータベースはエクスポートできません。 DAC でサポートされるオブジェクトの種類の詳細については、「 DAC Support For SQL Server Objects and Versions」を参照してください。

ディスク領域不足メッセージが表示される場合は、システムの %TEMP% フォルダーを個別のデータ ディスクに配置するように構成することをお勧めします。 これにより、エクスポート プロセスがスムーズに実行できる十分な領域を確保でき、ディスク領域の複雑化を回避できます。

システムの %TEMP% フォルダーを構成するには:

  • Windows で [システムのプロパティ]>[プロパティ] を開き、[システムの詳細設定] というラベルのリンクを選択します。

  • 次の [システム プロパティ] ウィンドウで、下部に移動し、[環境変数] を選択します。

  • [システム変数] セクションで、TEMP 変数と TMP 変数を見つけて、それぞれに関連付けられている [編集] を選択します。

  • 確立した個別のデータ ディスク上の経路を指すよう、両方の変数の値を変更します。 たとえば、データ ディスクが D: と指定されている場合は、値を D:\Temp と設定します。

  • [OK] を選択し、開いているすべてのウィンドウを閉じて、変更を確認します。