SQL Server 2012 从 SQL 查询创建用户
Posted
技术标签:
【中文标题】SQL Server 2012 从 SQL 查询创建用户【英文标题】:SQL Server 2012 Create user from SQL query 【发布时间】:2013-06-11 14:55:07 【问题描述】:我有一个系统用户表,每个用户都需要一个系统用来访问数据库的自己的数据库用户(不是我的想法..)。系统有自己的登录。 这给我们正在测试的 SQL AlwaysOn 分布式服务器设置带来了问题,因为用户不会在数据库之间同步。因此,虽然系统创建了数据库用户,但它们不会传播到辅助节点,并且当发生故障转移时,这些用户无法登录。
这就是我想要编写一个从数据库中的表创建数据库用户的脚本的理由。那么,为什么以下工作不起作用,我怎样才能使它起作用?
DECLARE @foo VARCHAR(250)
SET @foo = (SELECT USER_NAME FROM USER_TABLE WHERE USER_ID = 1337)
CREATE USER @foo
目前我在“@foo”附近的语法不正确
【问题讨论】:
为什么不起作用?你遇到了什么错误? 你不能像这样组合变量和命令。 SQL 不会用它的值替换@foo
,但会尝试创建一个名为@foo
的用户(这是非法名称)。您应该使用动态 sql 来实现这一点。 Dave K 刚刚发布了答案。
或者,您能否将所有这些用户放在一个 AD 组中,将该组 一次 添加到辅助组并完成?
Ben 真是个好主意,但在我们的特定情况下不起作用,因为用户帐户是由某个软件生成的 SQL 身份验证帐户。我们正在考虑使用包含的数据库。
【参考方案1】:
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 查询创建用户的主要内容,如果未能解决你的问题,请参考以下文章
怎么使用sql server查询显示第10条到第20条信息?
如何从 PowerShell 运行 SQL Server 查询?
使用 Visual Studio 2012 和 SQL Server Management Studio 2012 运行 SQL Server CE 4 查询