15

まず第一に、私が得ているエラーは、(データベースサーバータイプの)参照プロジェクトを作成し、それをデータベースプロジェクトで参照することで解決できることを知っています...しかし、これは、特に小規模なチームにとってはやり過ぎだと思います。開発者とデータベース管理者の間に特定の役割の分離はありません。しかし、この議論は別の機会に残しましょう...同じことがDACにも当てはまります...サポートされている限られたオブジェクトのDAC b/cを使用できません...

質問 ここで、質問は次のとおりです。データベースプロジェクトをビルドするときにSQL03006エラーを無効にできますか(およびその方法)。私の場合、このエラーは、ログインが「未解決」のユーザーを作成しているために発生します...スクリプトを展開する前にサーバーにログインが存在することを「知っている」ので、これは可能であると思います。 。また、参照を解決し続けることができるように、データベースサーバープロジェクトを維持したくありません(サーバーレベルでのログイン以外には何もありません)...

回避策 展開前/展開後のスクリプトを使用すると、秘密を機能させるのは簡単です...

回避策の問題回避 策として、ユーザースクリプト(ログイン参照を使用)をコメントアウトする必要があります...これを行うとすぐに、.sqlpermissionsが爆破され、参照されているユーザーがいないと表示されます...次に、アクセス許可をコメントアウトする必要がありますデプロイ後のスクリプトにそれらを配置します...この回避策の主な欠点は、スキーマを最大限に活用できないことです(ユーザー/ログイン/権限を無視するように指定する必要があります)

繰り返しになりますが、1。DBプロジェクトのみを維持する(DBサーバープロジェクトへの参照はありません)2。SQL03006エラーを無効化/抑制します3.DBプロジェクトでスキーマ比較を使用できるようにします

私は不可能を求めていますか?:)

乾杯

PS誰かがより良いVS2010データベースプロジェクトテンプレート/ツール(SQL Server 2008 R2用)を知っている場合は、共有してください...

4

1 に答える 1

7

2つの回避策があります。

1.ユーザーまたはセキュリティに関連するすべてのスキーマチェック([ツール]>[オプション]>[データベースツール]>[スキーマ比較]>[SQL Server 200x]、[オブジェクトタイプ]タブ)をオフにします。これは恒久的な修正です

2.スキーマの比較を行い、ユーザーまたはセキュリティに関連するものをすべてスキップとしてマークしてから、SQL比較スクリプトを生成します。これはスキーマごとの比較修正です。

明らかなはずですが、ログインまたはロールを参照するスクリプトがプロジェクトにすでにある場合は、それらを削除すると作成されません。

于 2011-02-24T22:10:03.853 に答える