我有一个系统用户表,每个用户都需要一个自己的数据库用户,系统使用该用户来访问数据库(不是我的想法..)。系统有自己的登录名。 这给我们正在测试的 SQL AlwaysOn 分布式服务器设置带来了问题,因为用户不会在数据库之间同步。因此,虽然系统创建了数据库用户,但它们不会传播到辅助节点,并且当发生失败转移时,这些用户无法登录。
这就是我想要编写一个从数据库中的表创建数据库用户的脚本的理由。那么,为什么以下不起作用以及我怎样才能让它起作用呢?
DECLARE @foo VARCHAR(250)
SET @foo = (SELECT USER_NAME FROM USER_TABLE WHERE USER_ID = 1337)
CREATE USER @foo
目前我在“@foo”附近得到的语法不正确
最佳答案
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
关于SQL Server 2012 从 SQL 查询创建用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17047235/