ターゲット プラットフォームを変更し、データベース プロジェクトを公開する方法
SQL Server (SSDT) のデータベース プロジェクトのターゲットとなる SQL Server Data Tools バージョンは、サポートされている任意の SQL Server インスタンス (SQL Server 2005、2008、2008 R2、Microsoft SQL Server 2012、または SQL Azure) に変更できます。 そうすることによって、データベース開発を 1 つのプロジェクトで行い、必要に応じて複数のバージョンの SQL Server インスタンスに発行することができます。
SSDT では、ターゲット プラットフォームを認識し、コード内のエラー (たとえば、SQL Azure に発行するプロジェクトでサポートされていない機能を使用している場合など) を自動検出することで、このタスクを容易にしています。
警告
以下に示す手順では、「接続されているデータベース開発」および「プロジェクト指向のオフライン データベース開発」に示されているこれまでの手順で作成したエンティティを使用します。
プロジェクトのターゲット プラットフォームを変更するには
ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] をクリックします。 左側の [プロジェクトの設定] タブをクリックし、[プロジェクトの設定] プロパティ ページを開きます。
このページの [ターゲット プラットフォーム] ボックスの一覧には、データベース プロジェクトの公開先としての指定が可能な、サポートされているすべての SQL Server プラットフォームが含まれています。 この手順では、SQL Azure を選択します。
スクリプトの編集時にプラットフォームの検証を使用するには
ソリューション エクスプローラーで Products テーブルを右クリックし、[コードの表示] をクリックして Transact-SQL エディターで開きます。
ON [PRIMARY] ステートメントの末尾に、CREATE TABLE を追加します。
エラー一覧ペインに、"SQL70015: 'ファイル グループ参照とパーティション構成' は SQL Azure ではサポートされていません。" というエラーが表示されます。
ターゲット プラットフォームに基づいて、スクリプトが自動的に検証されます。 ここでは、ファイル グループが SQL Azure でサポートされていないため、SSDT からエラーが返されます。 SQL Azure でサポートされていない Transact-SQL ステートメントの一覧については、「部分的にサポートされる Transact-SQL ステートメント (Microsoft Azure SQL Database)」を参照してください。
ON 句を削除します。 エラーが直ちに [エラー一覧] から消えます。
データベース プロジェクトを公開するには
SQL Azure インスタンスにアクセスできる場合は、スキップして次の手順に進むことができます。 それ以外の場合は、ソリューション エクスプローラーで TradeDev プロジェクトを右クリックし、[プロパティ] をクリックして [プロジェクトの設定] プロパティ ページを開きます。[ターゲット プラットフォーム] ボックスの一覧を使用して、プロジェクトの発行先となる SQL Server プラットフォームを選択します。
ソリューション エクスプローラーで TradeDev プロジェクトを右クリックし、[公開] をクリックします。 SSDT により、プロジェクトのビルドが開始されます。 ビルド エラーがなければ、[データベースの公開] ダイアログ ボックスが表示されます。
[データベースの公開] ダイアログ ボックスの [編集] をクリックし、ターゲットのデータベース接続を編集します。
[接続のプロパティ] ダイアログ ボックスで、SQL Server インスタンス名を指定し、認証に使用する資格情報を入力します。[データベースへの接続] に、「NewTrade」と入力します。 これにより、データベース プロジェクトを新しいデータベースに公開するように試行されます。 公開先の既存データベースを選択することもできます。 たとえば、既存の TradeDev データベースを選択すると、オフラインの TradeDev プロジェクトに含まれるオブジェクト (スクリプト) に対して加えた変更がすべて、ライブの TradeDev データベースに反映されます。
公開先のデータベースに変更を加えるアクセス許可を持っている場合は、[公開] をクリックします。 運用データベースに対する書き込みアクセス許可を持っていない場合は、[スクリプトの生成] をクリックし、Transact-SQL 公開スクリプトを作成できます。これは DBA に渡すことができます。 DBA はスクリプトを実行し、スキーマがデータベース プロジェクトと同期するように、運用サーバーを更新します。
[データ ツール操作] ウィンドウには、公開操作の進捗状況が表示され、エラーがあれば通知されます。 この新しいウィンドウでは、配置プレビュー、生成されたスクリプト、または必要に応じて公開のすべての結果も表示できます。
同じ設定を今後の公開操作に再利用できるように、公開設定をプロファイルに保存することもできます。 これには、[データベースの公開] ダイアログ ボックスの [プロファイルに名前を付けて保存] をクリックします。 今後は、[プロファイルの読み込み] をクリックすると既存の設定を再読み込みできます。
[データ ツール操作] ウィンドウのメッセージに注意してください。[公開プレビューを作成しています] の右にある [プレビューの表示] のリンクをクリックします。これにより、配置プレビュー レポートが表示されます。 プロジェクトの公開先のデータベース サーバーとプロジェクトのターゲット プラットフォームが一致しない場合は、SSDT による警告がこのレポートで発行されます。 たとえば、プロジェクトのターゲット プラットフォームが Microsoft SQL Server 2012 である場合に、プロジェクトを SQL Server 2008 R2 サーバー インスタンスに公開しようとすると、以下の警告が [出力] ウィンドウに表示されます。
Microsoft SQL Server 2012 をターゲット プラットフォームとして指定するプロジェクトでは、SQL Server 2008 との互換性の問題が発生する場合があります
このようなプロジェクトに、Microsoft SQL Server 2012 で導入されたエンティティ (シーケンス オブジェクトなど) が含まれていると、公開操作は失敗します。
オブジェクトの述語で、新しく作成したフルテキスト インデックスに対して CONTAINS または FREETEXT を使用し、トランザクション スクリプトが使用されると、配置は失敗します。 トランザクション スクリプトを含むオプションを配置中に有効にすると、プロシージャやビューがトランザクション内で定義されるのに対し、フルテキスト インデックスは配置スクリプトの末尾のトランザクションの外部で定義されます。 スクリプト内のこの順序により、CONTAINS または FREETEXT を使用したプロシージャまたはビューは、フルテキスト インデックスに対して解決されず、配置エラーが発生します。