今日まで、Visual Studio 2012のスキーマ比較機能を使用して、データベースプロジェクトからデータベースを更新できました。しかし、今では、1つのプロジェクトで比較を行うことができますが、更新ボタンがグレー表示されています。
他のプロジェクトを使用して他のデータベースを更新できますが、このプロジェクトからはデータベースを更新できません。エラーは発生しませんが、機能は利用できません。
パブリッシュの使用は引き続き機能します。また、データベースからプロジェクトを更新することもできますが、その逆はできません。
スキーマ比較でデータベースを更新できない理由を誰かが知っていますか?
比較した後、画面下部にステータスメッセージが表示されていることを確認します。データベースプロジェクトにコンパイルエラーがある場合、この問題が発生しました。エラーが解決したら、比較ダイアログを閉じて再度開きます。比較を再実行すると、更新ボタンが再び使用可能になります。
データベースユーザーとデータベーススキーマを確認する必要があります。多くの場合、データベースユーザーがDBプロジェクトで正しく複製されていない場合、スキーマ比較は機能しません。
私にとって、エラーリストペインと出力ペインはVisual Studio 2015で何も表示していませんでした。対象とするデータベースプロジェクトをビルドした後でのみ、出力ペインにエラーを表示できました(ただし、エラーリストペインにはまだありません)。 )。これらのエラーを修正した後、[更新]ボタンはグレー表示されなくなりました。
私も同じ問題に遭遇しました。上記のように、通常のVisual Studioエラーリストには、更新をブロックするエラーが一覧表示されますが、さらに警告も表示されます。デフォルトで有効になっているオプションの1つは、データ損失により更新がブロックされるです。それが問題です。これは単なる警告状態ですが、このフラグを変更しない限り、データ損失の可能性は機能的にエラーになります。
imho、これはMS側のかなり深刻なUI障害ですが、どうするのでしょうか。
私のために働いたのはスキーマを含めることでした。特定のテーブル/プロシージャのみを含めるように選択しました。テーブルとプロシージャを含むスキーマもチェックされていない場合、インポートには要素が含まれません。
私の場合、問題は、SQL ServerとSSMS(2016)の新しいバージョンをインストールしたことでした。比較するバージョンと一致するSQL Serverデータツールの正しいバージョンがインストールされていることを常に確認する必要があります。 Visual Studio 2017での作業を確認したSQL Server 2005-2017のSSDTへのリンクは次のとおりです。
https://docs.Microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017
スキーマ比較内でOptions-> General-> check *Ignore authorizer*
に移動します
すべてのSQLCMD変数にデフォルト値があることを確認する必要があります。
ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]を選択します。
左側のタブで、SQLCMD変数に移動し、表示された列にデフォルト値を入力します。
スキーマを実行した後、別の時間に比較すると、更新ボタンが使用できるようになります。
追加するテーブルの順序を変更しました。 2つのテーブル間に関係がある場合は、親テーブルを追加してから、従属テーブルをデータベースに追加する必要があります。
スキーマはデータベースプロジェクトに存在する必要があるだけでなく、データベースで変更された場合も最新に保つ必要があります。 DBAが私のプロジェクトにあるスキーマのデータベースの新しいSQLログインにexec権限を付与した後、更新は機能しなくなりました。ストアドプロシージャの変更が複数回失敗してプロジェクトに適用された後、変更したスキーマのみを選択してプロジェクトを更新しました。データベースプロジェクトのスキーマを更新した後、更新が再び機能し始めました。すべての更新にスキーマを含めています。お役に立てれば。