2

我有一个系统用户表,每个用户都需要一个自己的数据库用户,系统用来访问数据库(不是我的想法..)。系统有自己的登录。这给我们正在测试的 SQL AlwaysOn 分布式服务器设置带来了问题,因为用户不会在数据库之间同步。因此,尽管系统创建了数据库用户,但它们不会传播到辅助节点,并且当发生故障转移时,这些用户无法登录。

这就是我想要编写一个从数据库中的表创建数据库用户的脚本的理由。那么,为什么以下工作不起作用,我怎样才能使它起作用?

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 回答