2017-01-16 12 views
1

私は、Visual Studio 2013年に私のポスト導入スクリプトに次き:SQL ServerのDROP役割

-- Drop existing role and create again to be up to date 
DROP ROLE payments_data_access_role 
GO 

CREATE ROLE payments_data_access_role 
GO 

私はVSからデータベースを公開するときしかし、私はロール「payments_data_access_role」が存在しないというエラーが出ます。

これを書き換えて、ロールが存在する場合はロールを削除してロールを再定義できますか?

ありがとうございます。

UPDATE:私は次のことを試してみました、それが働いた:

IF IS_ROLEMEMBER ('payments_data_access_role') IS NOT NULL 
    DROP ROLE payments_data_access_role 

CREATE ROLE payments_data_access_role 
GO 

をこれは正しいアプローチですか?あなたはこれについてあなたの意見を提供することができますか?ありがとうございました。

答えて

0

IS_ROLEMEMBERあなたが使用しているように動作します。展開のために

、私はただのtry/catchでラップします:

BEGIN TRY 
    PRINT 'Trying to drop role paymens_data_access_role...'; 
    DROP ROLE payments_data_access_role; 
    Print 'Role payments_data_access_role dropped.'; 
END TRY 
BEGIN CATCH 
    PRINT 'Role payments_data_access_role does not exist, not dropping...'; 
END CATCH; 

CREATE ROLE payments_data_access_role; 

あなたが展開ログとエラーにフィードバックを得るその方法が実行を停止しません。ユーザーが役割に属しているかどうかを確認する関数を使用することと比較して、意図が何を比較しているかが少しはっきりしています。しばらくしてからこのコードに戻る必要があるとき、またはコードを解読した次の人のために、将来的にあなたをより簡単にすることができます。

+0

非常に私の視点から見えます。あなたが言ったすべてに同意します。ご協力ありがとうございました。 – Guygar

関連する問題