web-dev-qa-db-ja.com

SSDT:プロジェクトに含まれていないデータベースにユーザーを作成する

SSDTデータベースプロジェクトのユーザーを、同じサーバー上の別のデータベースのユーザーとして作成し、接続してdb_datareaderロールに追加する権限を付与します。

失敗した。 PostDeploymentスクリプトは以下について不満を述べています。

  • USEコマンドは使用できません
  • create User OtherDB.USERNAME構文を知らない

これはどのように実現できますか?必要なコマンドを配置できるスクリプトオプションはありませんか?

3
Magier

質問で説明されているアクションは問題になりません。配置後スクリプトを作成して、次のコードを追加できました。

USE [tempdb];
GO
PRINT DB_NAME();

IF (USER_ID(N'g') IS NULL)
BEGIN
    PRINT 'Creating user [g]...';
    CREATE USER [g] WITHOUT LOGIN;
END;
ELSE
BEGIN
    PRINT 'Dropping user [g]...';
    DROP USER [g];
END;

エラーなしでビルドおよびパブリッシュされ、期待どおりにコマンドが実行されます。

SQLスクリプトが本当にPostDeploymentスクリプトであることを確認してください。 BuildScriptに設定されている場合、おそらくこれらのエラーが発生します。スクリプトのプロパティを確認し、ビルドアクションPostDeployに設定されていることを確認します。

SSDTの最新のアップデートを使用していることを確認してください。最新バージョンはここにあります:

最新のSQL Serverデータツールをダウンロード

3
Solomon Rutzky