方法 : スクリプトからデータベース オブジェクトをインポートする

既存のデータベースからデータベース スキーマをインポートできるだけでなく、1 つまたは複数の既存のスクリプトからデータベース オブジェクトをインポートすることもできます。 この方法を使用すると、他のサード パーティ製ツールを使用して作成された既存のデータベース定義を取得して、データベース プロジェクトにインポートできます。 指定したスクリプトが解析され、データベース オブジェクトを作成するステートメントが識別された後、データベース プロジェクトにインポートされます。 スクリプトをインポートするには、SQL スクリプト ファイルのインポート ウィザードを使用するか、コマンド ウィンドウからオートメーション コマンドを使用します。

オブジェクトの定義にエラーが含まれている場合、そのオブジェクトはスキップされます。 このエラーが種類の定義に関するエラーである場合、ステートメントがデータベース プロジェクト内の ScriptsIgnoredOnImport.sql ファイルに格納されます。 オブジェクトの種類は有効であるがオブジェクトの定義にエラーがある場合 (存在しないテーブルを参照するビューなど)、[エラー一覧] ウィンドウにエラー メッセージが表示されます。

インポートされないステートメントは、ソリューションの ScriptsIgnoredOnImport.sql ファイルに格納されます。

データベース オブジェクト定義のインポート

SQL スクリプト ファイルのインポート ウィザードを使用するには

  1. [プロジェクト] メニューの [スクリプトのインポート] をクリックします。

    SQL スクリプト ファイルのインポート ウィザードが表示されます。

    注意

    ソリューション エクスプローラーまたはスキーマ ビューでデータベース プロジェクトを右クリックし、[スクリプトのインポート] をクリックすることもできます。

  2. [次へ] をクリックし、ウィザードの導入ページを読んだ後、[ファイルの選択] ページに進みます。

  3. 複数のスクリプトをインポートする場合、手順 7. に進みます。

  4. [単一ファイル] をクリックします。

  5. [ファイル名] ボックスに、インポートするスクリプトのパスを含むファイル名を入力します。 また、[参照] をクリックしてファイルを見つけることもできます。

  6. 手順 11. に進みます。

  7. [複数のファイル] をクリックします。

  8. [参照] をクリックし、インポートするスクリプトが格納されたフォルダーを含むフォルダーに移動します。

    重要

    スクリプト自体ではなく、インポートするスクリプトが格納されたフォルダーを選択します。

  9. [フォルダーの選択] をクリックします。

  10. ファイルとフォルダーの一覧で、スクリプトに対応するチェック ボックスか、インポートするスクリプトを含むサブフォルダーを選択します。

  11. [次へ] をクリックします。

  12. インポートしたオブジェクトでデータベース プロジェクト内の同じ名前と種類のオブジェクトを置き換える場合は、[プロジェクトに既に存在するオブジェクトを上書き] チェック ボックスをオンにします。

  13. 拡張プロパティをインポートしない場合、[拡張プロパティのインポート] チェック ボックスをオフにします。

  14. アクセス許可をインポートする場合、[アクセス許可のインポート] チェック ボックスをオンにします。

  15. アクセス許可をインポートし、プロジェクト モードに追加する場合、[インポートされたアクセス許可をプロジェクト モデルに追加する] チェック ボックスもオンにする必要があります。

    注意

    アクセス許可をインポートし、モデルに追加する場合、データベース プロジェクトを開くために必要な時間は大幅に増える可能性があります。

  16. [エンコード] から、スクリプト ファイルの作成に使用したエンコードをクリックします。

  17. [完了] をクリックし、指定したスクリプトからデータベース オブジェクト定義をインポートします。

    スクリプトの解析時に進行状況ページが表示され、オブジェクト定義がデータベース プロジェクトに追加されます。 スクリプトからデータベース定義をインポートすると、ログ ファイルが作成されます。 ログ ファイルは、プロジェクト フォルダーの Import Script Logs サブフォルダー内に格納されます。

    注意

    ソース ファイルは変更されず、共有読み取り専用モードで開きます。

Visual Studio のオートメーション モデルを使用するには

  1. データベース プロジェクトを作成するか開きます。

    詳細については、「方法: 空のデータベース プロジェクトおよびサーバー プロジェクトを作成する」または「方法 : データベースまたはサーバー プロジェクトを開く」を参照してください。

  2. [表示] メニューを開き、[その他のウィンドウ] をポイントし、[コマンド ウィンドウ] をクリックします。

  3. コマンド ウィンドウで、次のコマンドを入力します。

    Project.ImportScript /FileName "MyScript.sql"
    

    MyScript.sql をインポートするスクリプト ファイルの名前で置き換えます。

    注意

    コマンドに対して、インポート操作を制御する追加オプションを指定できます。 詳細については、「Visual Studio のデータベース機能のオートメーション コマンド リファレンス」を参照してください。 ファイル名を指定しない場合、データベースのインポート ウィザードが表示されます。

    コマンドを実行すると、指定したスクリプトからソリューション エクスプローラーで選択したプロジェクトにオブジェクトと設定がインポートされます。 [エラー一覧] ウィンドウには、スクリプトのインポート時に作成されたオブジェクトに関連するエラーが表示されます。

    この時点で、データベース プロジェクトをビルドおよび配置する前に、データベース プロジェクトの設定を構成しておく必要があります。 詳細については、「方法: データベース プロジェクトのデータベース プロパティを構成する」を参照してください。

問題と制約

SQL スクリプト ファイルのインポート ウィザードにより、指定されたスクリプトがすべてのデータ定義言語 (DDL: Data Definition Language) の CREATE ステートメントに対して検索され、対応するオブジェクトがプロジェクトに追加されます。 次の制約が適用されます。

  • 認識されないステートメントは、データベース プロジェクト内の ScriptsIgnoredOnImport.sql ファイルに格納されます。

  • スクリプトには、単一データベース内のオブジェクトに対する定義が含まれているものと見なされます。 すべてのオブジェクトが、現在のデータベース プロジェクトにインポートされます。 複数のデータベースの定義がスクリプトに含まれている場合、CREATE DATABASE ステートメントと USE ステートメントは無視され、すべてのオブジェクトがデータベース プロジェクトに追加されます。 複数のデータベース プロジェクトを作成する場合、ファイルを手動で分割して各データベースに 1 ファイルずつ割り当て、各ファイルをそれぞれのデータベース プロジェクトに個別にインポートする必要があります。 複数のデータベース定義を持つスクリプトを単一のデータベース プロジェクトにインポートする場合、大量のエラーが発生する可能性があります。

  • ファイル グループを追加する ALTER DATABASE ステートメントも同時にインポートされます。 スクリプトに CREATE ステートメントが記述されていて、このステートメントによって作成されたオブジェクトに対する DROP ステートメントがその後に続いている場合でも、このオブジェクトは削除されることなくインポートされます。

  • テーブルに対する制約の追加や、フルテキスト インデックス用の列の指定を行う ALTER TABLE ステートメントだけがインポートされます。 制約については、単一の制約を追加するステートメントだけが認識されます。 複数の制約を追加するステートメントはスキップされます。

  • バッチ処理は、GO ステートメントで分割する必要があります。

    注意

    スクリプトの実行結果をインポートするには、スクリプトに記述されている CREATE ステートメントを使用するのではなく、スクリプトを実行してデータベースを作成し、[データベース スキーマのインポート] を使用してスクリプト実行後のデータベースをインポートします。

参照

処理手順

方法 : データベース オブジェクトを表示する

方法 : データベース オブジェクトを削除する

概念

データベース オブジェクトおよびサーバー オブジェクトの作成と変更