スキーマ比較-ソースモデルの作成中に予期しない例外がキャッチされました:オブジェクト参照がインスタンスオブジェクトに設定されていません

d219

Visual Studio 2017のデータベースプロジェクトでスキーマ比較を実行していますが、これを実行すると、[エラーリスト]タブに次のメッセージが表示されます。

ソースモデルの作成中に予期しない例外がキャッチされました:オブジェクト参照がインスタンスオブジェクトに設定されていません。

同じ問題のように見えるこのブログを見つけましたが、提案された解決策([ターゲットスキーマの選択]ウィンドウを使用してエントリを削除する)は、数回試しても機能しませんでした。

比較は、Visual Studio 2013の同じプロジェクトとデータベースで正常に機能する(そして実際に機能する)ので、回避策はありますが、問題の原因を把握しておくと便利です(VS2013はそのままにしておきます)。

d219

私はこれに対する解決策を見つけました。データベースプロジェクトの場合、プロパティに「ターゲットプラットフォーム」設定があります(以下を参照)。これをSQLServer 2017に設定すると、比較が機能するようになりました。

ここに画像の説明を入力してください

必要なデフォルトのプラットフォームは、データベースの互換性に依存しているようです(https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-levelを参照)。この問題が最初に発生したときに2017が必要でしたが、(互換性レベルが120のデータベースに対して)再発するには、SQL Server2014を選択する必要がありました。

奇妙なことに、ターゲットプラットフォームを前後に切り替えるだけで問題を解決できることがわかりました。たとえば、SQL 2014には存在しなかったSQLコマンドを使用したデータベースプロジェクトがあり、2017年のターゲットと比較を実行しましたが、上記で失敗しました。エラー、2014ターゲットで実行され、エラーが発生した場合(新しいSQL関数を理解していないため、予想どおり)、2017ターゲットに戻ると、比較が正常に機能するようになりました。

編集:異なるジョブ、異なるDBバージョン(2019)。すべてが数か月間正常に機能していたため、このエラーが発生しました。上記は今回は機能しなかったので、誰かが同じものを見つけた場合に備えて、VSを閉じて再度開くことを試みてテストしました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ