VS 2012を使用してデータベースプロジェクトを作成しました。スキーマの比較が完了したら、[ターゲットの更新]ボタンを有効にして、ターゲットと同期する必要があります。
しかし、それは有効になっていません。助けてPLZ。
SP 3、SQL Server 2012でVS 2012を使用しています。
エラーが発生した場合はエラーリストを確認してください。VSに認識されないWordがあります(SQL Serverにはあります)。
「内部エラーが原因でデプロイメントプランを生成できません」という「警告」メッセージがあるかどうかを確認します。その場合、[更新]および[スクリプトの生成]ボタンは無効になります。
Visual Studioを閉じ、データベースプロジェクトを含むフォルダーに移動して、すべての(* .dbmdl)ファイルを削除します。次にVisual Studioを再起動し、比較スキーマを再実行します。この時点で、[更新]ボタンを有効にする必要があります。
回避策:
私の場合。エラーの修正は優先タスクではありませんでした。また、エラーリストでエラーを見つけることができませんでした。
ソースまたはターゲットで「Visual Studioデータベースプロジェクト」を使用する必要はありません。プロジェクトを使用する代わりに、すでに使用しているスクリプトを使用して一時データベースを作成します。
この(またはこれらの)一時データベースをソースおよび(または)その他のターゲットで選択します。
ボタンを有効にする必要があります。
私にとって、問題を解決することよりも違いを得ることがはるかに重要でした。お役に立てば幸いです。もっと即興で。
データベースプロジェクトには、デフォルト値のないsqlcmd変数があるようです。
参照: http://www.andrewburrow.net/vs2012-schema-compare-buttons-disabled/
お役に立てれば。
そして、結局のところ、利用可能なpdate Targetボタンと無効なGenerate Scriptボタンがある場合です。
ソースがデータベースであり、ターゲットがSSDTプロジェクトであるかどうかを確認します。
その場合は、「ソースとターゲットの切り替え」ボタンをクリックします。
スクリプトの生成ボタンが使用可能になります。
つまりスキーマ比較ウィンドウでは、SSDTプロジェクトがソースであり、データベースがターゲットである必要があります。
SSDTで、更新ボタンが有効になっているのに生成スクリプトが有効になっていない場合がありました。これは、宛先スキーマがローカルソリューション(* .sqlproj vsプロジェクト)だったためです。
スクリプトを正しく生成するには、宛先が実際のデータベースである必要があることに私が気づくまでに数分かかりました。
「スキーマ比較」で「オプション」を開くたびに、「比較」ボタンをもう一度クリックして「更新」ボタンをアクティブにする必要があります。ただし、最初に機能しない場合は、スキーマ比較ファイルを閉じて再度開くだけです。
私にとって、エラーリストに表示されるエラーはありませんでした。これは、[生成された問題を表示]ドロップダウンを[ビルドのみ]に設定していたためです。これを「ビルド+ IntelliSense」に変更すると、[スクリプトの生成]ボタンと[更新]ボタンを有効にするために修正が必要なSQLエラーを確認できました。
回避策2:
私の場合、以前に作成してプロジェクトに追加したビューに関するエラー警告があったため、[更新]ボタンはグレー表示されていました。問題は、完全なデータベース修飾オブジェクトの命名を使用するようにビューがスクリプト化されていることでした。例えば。 [データベース名]。[スキーマ名]。[オブジェクト名]はSSMSでは問題なく機能しますが、DBプロジェクトでチェックすると問題が発生します。同じDBプロジェクト内のオブジェクトを参照するために3つの部分からなる名前を使用すると、Visual Studioでエラー/警告が発生します。
ビューの定義でコードを[schemaname]。[objectname]に変更すると、エラー警告が削除され、[更新]オプションが有効になります。幸せな日々!
通常、データベースオブジェクトがデータベースプロジェクト内の物理的に別のSQLファイルで使用可能であるが、データベースプロジェクト自体には含まれていない場合、更新ボタンはグレー表示されます。これらのSQLスクリプトをプロジェクトに追加するだけで、スキーマを比較した後、更新ボタンが有効になります。