複雑なクエリで複数のテーブルから選択するビューを作成しました。
VS2010データベースプロジェクトをビルドすると、SQLスクリプトにはCREATEコマンドが(1)ビュー、(2)ストアドプロシージャ、(3)トリガーの順に含まれます。
ここで、展開スクリプトを実行すると、エラーが発生します。
*** SQL01268 D:\scripts\vs2010\Database.sql (28494,0).Net SqlClient Data Provider:
Msg 4405, Level 16, State 1, Procedure MyViewSave, Line 18 View or function 'MyView' is
not updatable because the modification affects multiple base tables
トリガーがストアドプロシージャの前に作成される場合、問題はありません。
ストアドプロシージャの前にトリガーが作成されていることを確認するにはどうすればよいですか?
ありがとう!
Visual Studio 2010で既知の問題が発生した可能性があります。
つまり、 Microsoftが推奨 Visual Studioが、デプロイメントスクリプトで無視していると思われるオブジェクトの依存関係を検出できるようにするには、次のようにします。
従属関係に関与するオブジェクトの名前をスキーマ修飾します。
したがって、開発中のすべてがdbo
スキーマにある場合は、スキーマ名に問題が発生するように、プロシージャ名とビュー名を先頭に追加してください。例えば: dbo.MyView
だけではなくMyView
。 Visual Studioのオブジェクトを右クリックすると、リファクタリングメニューの下に「完全修飾名」機能があり、これをすばやく実行できます。
それでも問題が解決しない場合は、Googleを試して、上記のリンク先のページで提案されている回避策のいくつかを確認してください。何がうまくいったのか教えてください。