2017-03-02 20 views
1

IveはSSMS(2014)でいくつかの作成スクリプトを生成し、スクリプトの一部としていくつかのアカウントが作成されました。 dbがテスト、試作、またはプロダクションに展開されているかどうかに基づいて、異なるアカウントを使用します。インストーラが簡単にアカウントを変更できるようにしたいので、ログインを保存してスクリプトの一番上にこれを宣言してもよいかどうかはわかりませんこれについて。現在私は持っています変数にSQLユーザーを格納する

CREATE USER [RAMBOLL\SVC_D-StructureDB] FOR LOGIN [somedomain\someaccount] WITH DEFAULT_SCHEMA=[dbo] 
GO 
ALTER ROLE [db_datareader] ADD MEMBER [somedomain\someaccount] 
GO 
ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\someaccount] 
GO 

"somedomain \ someaccount"を宣言し、上記のsqlコードで参照できますか?私はしようとしたが、SQLはそれのようなdidnt。

DECLARE @SomeAccount VARCHAR(255) 
SET @SomeAccount = "[somedomain\someaccount]" 

CREATE USER @SomeAccount FOR LOGIN @SomeAccount WITH DEFAULT_SCHEMA=[dbo] 
    GO 
    ALTER ROLE [db_datareader] ADD MEMBER @SomeAccount 
    GO 
    ALTER ROLE [db_datawriter] ADD MEMBER @SomeAccount 
    GO 

答えて

0

これらのレガシーと-削除されますストアドプロシージャをパラメータ化

許可しかし、私はいくつかのオプション場合IF文を検討します。柔軟性が必要な場合は、動的SQLを使用してください。

DECLARE @env VARCHAR(10) 
SET @env = 'test' 

IF @env = 'test' 
BEGIN 
    CREATE USER [somedomain\someaccount] FOR LOGIN [somedomain\someaccount] WITH DEFAULT_SCHEMA=[dbo] 
    ALTER ROLE [db_datareader] ADD MEMBER [somedomain\someaccount] 
    ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\someaccount] 
END 
ELSE IF @env = 'live' 
BEGIN 
    CREATE USER [somedomain\liveaccount] FOR LOGIN [somedomain\liveaccount]WITH DEFAULT_SCHEMA=[dbo] 
    ALTER ROLE [db_datareader] ADD MEMBER [somedomain\liveaccount] 
    ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\liveaccount] 
END 
... 
関連する問題