2017-09-13 4 views
0

私は、次の情報グラントサーバーの役割のSQLサーバー2008R2

サーバー、インスタンス、ユーザーID、アクセス、STARTDATEとexpirydateと私のSQLテーブル「eptrack」を更新ツールを持っています。

このテーブルは、トリガーを更新されるたびに順番に、それぞれのサーバー/インスタンスに接続する作業を開始し、要求されたサーバーの役割を付与します。

私は次のクエリを経由してロールを付与することができています。

exec sp_addsrvrolemember'na\admin_Test1', 'sysadmin' 

ただし、次のクエリでこの情報をテーブルから選択しようとすると、エラーが発生します。

EXEC sp_addrolemember '(select userid from eptrack)' , '(select access from eptrack)' 

は、私は、サーバーの役割は、あなたがに1行を取得し、あなたのテーブルを通過するためにカーソルを使用する必要があり、同じテーブルにユーザーID用のテーブルから

答えて

0

を選ん付与に関するクエリのヘルプを得ることができます

declare @eptrack table (userid sysname, access sysname); 
insert into @eptrack values ('na\admin_Test1', 'sysadmin'); 

declare @rolename sysname, @membername sysname; 

select @rolename = access, @membername = userid 
from @eptrack; 

exec sp_addsrvrolemember @membername, @rolename; 
+0

ありがとうございます。今回は新しいエラーが発生しています。 "サーバーロール 'na \ admin_Test1'は存在しないか、アクセス権がないため変更できません。" ログイン用のsysadminアクセス権があります。 –

+0

@Arvind Aryans、申し訳ありませんが、私のコードでエラーが発生しました。 '@ membername'ではなく' @ rolename'にuseridを使用しました。私の答えは – sepupic

+0

でした。助けてくれてありがとう。 –

0

sp_addrolememberによると、これは同様

を変数を受け付けます。時間は、2つの変数を割り当てて、このような sp_addsrvrolememberに渡します予想通り

ので、あなたは、この選択から複数の結果がある場合は、上記の選択は、あなたのテーブルから得ることができる

declare @rolename sysname, 
     @membername sysname 

     select @rolename='db_Datareader',@membername='test' 
EXEC sp_addrolemember @rolename,@membername 

以下のような何かを試すことができますが動作しません、あなたが追跡する方法を持っている場合があります/一度に1行しか取得

0

は支援をいただき、ありがとうございます。私は

宣言@rolenameのシステム名の下に述べたように @membernameのシステム名は

、上記のクエリを試みたロール名=(eptrackからのアクセスを選択)@を選択し、memberNameの@ =(eptrackからユーザIDを選択) EXECのsp_addrolememberの@rolename 、@ memberNameの

私は、ユーザーIDが存在しないエラーを参照してください。私はちょうどテーブルに情報を挿入し、その後にクエリを実行しました。

+0

私は問題を修正しました。すべての支援をありがとう。 –

0

これはうまくいきました。ありがとうございました。私たちはユーザーIDを入力し、手動でアクセスしており、テーブルから選択した情報が必要です。

declare @eptrack table(userid sysname、access sysname);

@eptrack値に挿入します((eptrackからユーザーIDを選択します)、(eptrackからアクセスを選択します));

宣言@rolenameのシステム名、システム名@membername。

select @rolename = access、@ membername = userid from @eptrack;

EXEC sp_addsrvrolememberの@membername、@rolename。

私は上記の1つを試してみましたが、ユーザーIDが有効なログインではないというエラーが表示されます。 私はselectコマンドを正しく入力しているかどうかを確認したいのですか?

テーブルには新しい行が頻繁に挿入され、新しい値が挿入されるたびにクエリがユーザーIDを選択してテーブルからアクセスする必要があります。

関連する問題