VSDBCMD.exe ユーティリティを使用して Visual Studio データベース プロジェクト (GDR R2) を展開しようとしています。接続文字列が統合セキュリティを使用している場合は正常に展開できますが、Sql Server 認証を使用するように切り替えると、次のエラーが発生します。
ターゲット モデル MyCatalog のインポートに失敗しました。詳細メッセージ 'MyCatalog' データベースに対する定義の表示権限がないため、リバース エンジニアリング操作を続行できません。
Visual Studio を使用してデプロイする場合、Sql Server 認証を使用して正常にデプロイできます。
実行に使用しているコマンドは次のとおりです。
vsdbcmd
/a:deploy
/dsp:sql
/dd-
/cs:"Data Source=localhost;Initial Catalog=MyCatalog;User ID=MyUserId;Password=MyPassword"
/script:C:\MyDbScriptFile.sql
/manifest:C:\Database.deploymanifest
/p:DeploymentConfigurationFile=C:\Database.sqldeployment
/p:SqlCommandVariablesFile=C:\Database.sqlcmdvars
表示上の理由から、すべてのパラメータは別々の行にあります。繰り返しますが、接続文字列を Integrated Security に変更すると機能します。
Visual Studio の Sql Server Profiler と VSDBCMD.exe を実行すると、MyUserId の接続のみが表示されます。Visual Studio は別のアカウントを使用していないようです。しかし、行われるクエリは異なります。ツールの動作が異なるように見えることに驚かないでください。
Visual Studio を使用して正常に実行できる理由がわかるまで、特定のビュー定義のアクセス許可をユーザーに追加したくありません。
ありがとう。