2

システムがDBにアクセスするために使用する独自のデータベースユーザーを必要とするシステムユーザーのテーブルがあります(私の考えではありません..)。システムには独自のログインがあります。これは、ユーザーがデータベース間で同期されないため、テスト中の SQL AlwaysOn 分散サーバー セットアップで問題を引き起こしています。そのため、システムはデータベース ユーザーを作成しますが、それらはセカンダリ ノードに伝達されず、フォールオーバーが発生すると、これらのユーザーはログインできません。

これが、DB 内のテーブルから DB ユーザーを作成するスクリプトを書きたいという私の正当な理由です。では、なぜ次のように機能しないのでしょうか。どうすれば機能するのでしょうか?

DECLARE @foo VARCHAR(250)
SET @foo = (SELECT USER_NAME FROM USER_TABLE WHERE USER_ID = 1337)    
CREATE USER @foo

現在、「@foo」の近くで構文が正しくありません

4

1 に答える 1

2
DECLARE @foo VARCHAR(250), @execString NVARCHAR(MAX)
SET @foo = (SELECT USER_NAME FROM USER_TABLE WHERE USER_ID = 1337)    

SET @execString = 'CREATE USER ' + @foo
EXECUTE sp_executesql @execString
于 2013-06-11T15:11:39.087 に答える