创建用户动态名称和assgin角色

Sud*_*ha 5 sql t-sql sql-server

我需要创建具有变量名称的动态名称的用户

例如:

以下代码给出了语法错误.

Create Login @User_name WITH PASSWORD @password;
                USE database; 
Run Code Online (Sandbox Code Playgroud)

我需要为创建的用户分配一个角色..

Mik*_*son 9

您不能对变量使用create login.您必须动态创建语句,或者可以使用sp_addlogin.根据http://msdn.microsoft.com/en-us/library/ms173768.aspx,不推荐使用sp_addlogin.

declare @UN sysname
declare @PW sysname
declare @S nvarchar(100)

set @UN = 'UserName'
set @PW = 'Password'

set @S = 'CREATE LOGIN ' + quotename(@UN) + ' WITH PASSWORD = ' + quotename(@PW, '''')

exec (@S)
Run Code Online (Sandbox Code Playgroud)


Ric*_*iwi 5

您不能将变量用于对象名称.你可以作弊

exec sp_addlogin @User_name, @password;
Run Code Online (Sandbox Code Playgroud)

要么是构造动态SQL,要么确保使用QUOTENAME来防止SQL注入.

  • 自SQL Server 2005以来,不推荐使用此存储过程,您最好使用动态SQL和CREATE LOGIN (3认同)