SQL Server 2012 从 SQL 查询创建用户

标签 sql sql-server t-sql sql-server-2012 alwayson

我有一个系统用户表,每个用户都需要一个自己的数据库用户,系统使用该用户来访问数据库(不是我的想法..)。系统有自己的登录名。 这给我们正在测试的 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/

相关文章:

MySql 是否根据先前的值递增

SQL Server 2005 数据类型

sql-server - SQL查询: Obtaining Rows where Columns A in Table A = Column A in Table B

mysql - SQL 连接中的多个条件

sql - 如何在 FORMSOF Inflectional 全文搜索中获取匹配项的位置?

excel - 使用 Excel 处理 SQL 数据(读/写)

sql - 使用完全限定名称会影响性能吗?

sql - PostgreSQL:如何对未包含列的联合查询进行排序?

MYSQL - 基于其他列中公共(public)值的列的 SUM

c# - 无法从 UWP 应用程序连接到 SQL Server Express 数据库