質問

スキーマを実行する場合、ターゲットデータベースにdb_ownerの権利を持つことを比較すると、次のエラーが発生します。

ユーザーは、このアクションを実行する許可を持っていません。

SQL Server Profilerを使用して、このエラーが発生し、マスターDBビューをターゲットとするクエリの実行が発生します。[sys]。[dm_database_encryption_keys

すべてのオブジェクトタイプを具体的に無視しますが テーブル SQL CompareはDB暗号化キーへのアクセスを必要としないと推測されます。また、注:

http://social.msdn.microsoft.com/forums/en-us/vstsdb/thread/c11a5f8a-b9cc-454f-ba77-e1c69141d64b/

ソリューションの1つは、View Server StateをDBユーザーに付与することですが、私の場合はデータベースサービスをホストしておらず、サーバー状態の権利を取得しません。

また、CompareファイルのDatabaseCryptionKey要素を除外してみました。

 <PropertyElementName>
    <Name>Microsoft.Data.Schema.Sql.SchemaModel.SqlServer.ISql100DatabaseEncryptionKey</Name>
    <Value>ExcludedType</Value>
 </PropertyElementName>

誰かがこれを回避策を持っていますか?

MS Data Toolsを使用して、データベースプロジェクトからDTAP環境への公開と比較しています。

役に立ちましたか?

解決

私が見つけた唯一の成功した回避策は、スキーマをローカル開発データベースに展開し、データベースプロジェクトの代わりにそのローカルデータベースをソースとして使用してスキーマを比較することです。

この状況ではまだエラーが発生しますが、 Write Updates ボタンは無効になっていないため、スキーマは予想どおりに更新されます。

他のヒント

なぜ他の(外部)スキーマ比較ツールを試すことができないのですか? Red GateのSQL Compareをご覧ください。

2008年VSでMSデータツールを使用している必要がありますか?このような外部ツールを試すべきだと思います:

sqldbdiff

DBのスキーマを比較するためのこの非常に素晴らしいツール。また、スクリプトを生成してスキーマを同期することもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top