スキーマ比較に関する問題のトラブルシューティング

2 つのデータベース スキーマを比較するときに、ここで説明する問題が発生する場合があります。

依存関係と更新スクリプト

更新スクリプトにオブジェクトを正しい順序で生成するために、スキーマ比較はオブジェクトの依存関係を調べます。たとえば、ビューがテーブルに依存する場合、テーブルを作成してからビューを作成する必要があります。第 2 のオブジェクトに依存しているオブジェクトがスキーマで修飾された名前を使用していないと、その依存関係が識別されないため、更新スクリプトまたは作成スクリプトに正しい順序でステートメントが作成されない場合があります。この順序が正しくないと、ソースと一致するようにターゲットを更新したり、変更をデータベースに配置したりするときに、エラーが発生する可能性があります。この問題は、データベースのビルド スクリプトで発生することもあります。

Aa833294.alert_note(ja-jp,VS.90).gifメモ :

この問題の発生を防ぐには、依存関係に関与しているオブジェクトの名前がスキーマで修飾されていることを確認します。次の例に示すように、単に KeysTable を参照する代わりに [dbo].[KeysTable] を参照するようにステートメントの末尾を変更すると、依存関係を正しく識別できるようになります。

CREATE VIEW [NewUser].[ViewReferencingScalarFunction] AS SELECT Column2, dbo.SimpleMultiplyParamByTwo(PK_Column) AS [Function] FROM KeysTable

対称キー、非対称キー、および証明書

Visual Studio Team System Database Edition では、対称キー、非対称キー、および証明書をデータベース オブジェクトとして作成することはできません。データベース スキーマをインポートすると、各キーと証明書の名前のプレースホルダ コメントが配置前スクリプトに組み込まれます。この配置前スクリプトを編集して、これらのオブジェクトを作成してください。同様に、データベース スキーマを比較する操作では、欠落した対称キー、非対称キー、または証明書の作成に必要な Transact-SQL (T-SQL) コマンドがスキーマ更新スクリプトに組み込まれません。更新スクリプトをエディタにエクスポートし、これらのオブジェクトを作成するステートメントを追加する必要があります。Transact-SQL (T-SQL) ステートメントの詳細については、「Transact-SQL リファレンス」を参照してください。

テーブルとインデックスのオプション

スキーマ比較では、sp_tableoption または sp_indexoption を使用して設定されたオプションを比較しません。この問題の対処方法はありません。

大規模なデータベースの比較時のタイムアウト

大規模なデータベースのスキーマを比較しているときにタイムアウト エラーを受け取った場合、タイムアウトの設定値を増やす必要があります。このオプションは、ユーザー インターフェイスの形では公開されていません。レジストリで HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\DBPro\Databaseand の下に格納されている QueryTimeoutSeconds の値を変更する必要があります (秒で指定します)。既定のタイムアウトは 60 秒です。

ファイルおよびファイル グループの比較

ターゲット データベース内のファイル グループが読み取り専用である場合、そのデータベースとデータベース プロジェクト間のスキーマ比較において、そのプロパティは常に相違があるものとして表示されます。また、スキーマを比較するとき、プライマリ ファイル グループは無視されます。

参照

処理手順

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

方法 : データの相違点を表示する

概念

Database Edition の用語の概要