方法:ターゲット プラットフォームを変更し、データベース プロジェクトを公開する

SQL Server Data Tools (SSDT) データベース プロジェクトのターゲット SQL Server のバージョンは、サポートされている任意の SQL Server インスタンス (SQL Server 2005、2008、2008 R2、Microsoft SQL Server 2012、または SQL Azure) に変更することができます。 そうすることによって、データベース開発を 1 つのプロジェクトで行い、必要に応じて複数のバージョンの SQL Server インスタンスに発行することができます。

SSDT では、ターゲット プラットフォームを認識し、コード内のエラー (たとえば、SQL Azure に発行するプロジェクトでサポートされていない機能を使用している場合など) を自動検出することで、このタスクを容易にしています。

プロジェクトのターゲット プラットフォームを変更するには

  1. ソリューション エクスプローラーでプロジェクトを右クリックし、 [プロパティ] をクリックします。 左側の [プロジェクトの設定] タブを選択し、[プロジェクトの設定] プロパティ ページを開きます。

  2. このページの [ターゲット プラットフォーム] ボックスの一覧には、データベース プロジェクトの公開先としての指定が可能な、サポートされているすべての SQL Server プラットフォームが含まれています。 この手順では、 SQL Azureを選択します。

スクリプトの編集時にプラットフォームの検証を使用するには

  1. ソリューション エクスプローラーで Products テーブルを右クリックし、[コードの表示] をクリックして Transact-SQL エディターで開きます。

  2. ON [PRIMARY] ステートメントの末尾に、 CREATE TABLE を追加します。

  3. [エラー一覧] ウィンドウに、「SQL70015: 'ファイル グループ参照とパーティション構成' は SQL Azure ではサポートされていません。」というエラーが表示されます。

    ターゲット プラットフォームに基づいて、スクリプトが自動的に検証されます。 ここでは、ファイル グループが SQL Azure でサポートされていないため、SSDT からエラーが返されます。 SQL Azure で非対応の Transact-SQL ステートメントの一覧については、「部分的にサポートされる Transact-SQL ステートメント (Microsoft Azure SQL Database)」をご覧ください。

  4. ON 句を削除します。 エラーが直ちに [エラー一覧] から消えます。

データベース プロジェクトを公開するには

  1. SQL Azure インスタンスにアクセスできる場合は、スキップして次の手順に進むことができます。 それ以外の場合は、ソリューション エクスプローラーTradeDev プロジェクトを右クリックし、 [プロパティ] をクリックして [プロジェクトの設定] プロパティ ページを開きます。 [ターゲット プラットフォーム] ボックスの一覧を使用して、プロジェクトの発行先となる SQL Server プラットフォームを選択します。

  2. ソリューション エクスプローラーTradeDev プロジェクトを右クリックし、 [公開] をクリックします。 SSDT により、プロジェクトのビルドが開始されます。 ビルド エラーがなければ、[データベースの公開] ダイアログ ボックスが表示されます。

  3. [データベースの公開] ダイアログ ボックスの [編集] を選択し、ターゲットのデータベース接続を編集します。

  4. [接続のプロパティ] ダイアログ ボックスで、SQL Server インスタンス名を指定し、認証に使用する資格情報を入力します。 [データベースへの接続] に、「 NewTrade」と入力します。 これにより、データベース プロジェクトを新しいデータベースに公開するように試行されます。 公開先の既存データベースを選択することもできます。 たとえば、既存の TradeDev データベースを選択すると、オフラインの TradeDev プロジェクトに含まれるオブジェクト (スクリプト) に対して加えた変更がすべて、ライブの TradeDev データベースに反映されます。

    公開先のデータベースに変更を加えるアクセス許可を持っている場合は、 [公開] をクリックします。 ただし、運用データベースに対する書き込みアクセス許可を持っていない場合は、[スクリプトの生成] を選択し、Transact-SQL 公開スクリプトを作成できます。これは DBA に渡すことができます。 DBA はスクリプトを実行し、スキーマがデータベース プロジェクトと同期するように、運用サーバーを更新します。

  5. [データ ツール操作] ウィンドウには、公開操作の進捗状況が表示され、エラーがあれば通知されます。 この新しいウィンドウでは、配置プレビュー、生成されたスクリプト、または必要に応じて公開のすべての結果も表示できます。

  6. 同じ設定を今後の公開操作に再利用できるように、公開設定をプロファイルに保存することもできます。 これには、[データベースの公開] ダイアログ ボックスの [プロファイルに名前を付けて保存] を選択します。 今後は、[プロファイルの読み込み] を選択すると既存の設定を再読み込みできます。

  7. [データ ツール操作] ウィンドウのメッセージに注意してください。 [公開プレビューを作成しています...] の右にある [プレビューの表示] リンクを選択します。これにより、展開プレビュー レポートが表示されます。 プロジェクトの公開先のデータベース サーバーとプロジェクトのターゲット プラットフォームが一致しない場合は、SSDT による警告がこのレポートで発行されます。 たとえば、プロジェクトのターゲット プラットフォームが Microsoft SQL Server 2012 である場合に、プロジェクトを SQL Server 2008 R2 サーバー インスタンスに公開しようとすると、以下の警告が [出力] ウィンドウに表示されます:

ターゲット プラットフォームとして Microsoft SQL Server 2012 を指定するプロジェクトで SQL Server 2008 との互換性の問題が発生する場合があります このようなプロジェクトに Microsoft SQL Server 2012 で導入されたエンティティ (たとえば、シーケンス オブジェクト) が含まれている場合、公開操作は失敗します。

オブジェクトの述語で、新しく作成したフルテキスト インデックスに対して CONTAINS または FREETEXT を使用し、トランザクション スクリプトが使用されると、配置は失敗します。 トランザクション スクリプトを含むオプションを配置中に有効にすると、プロシージャやビューがトランザクション内で定義されるのに対し、フルテキスト インデックスは配置スクリプトの末尾のトランザクションの外部で定義されます。 スクリプト内のこの順序により、CONTAINS または FREETEXT を使用したプロシージャまたはビューは、フルテキスト インデックスに対して解決されず、展開エラーが発生します。