在SQL Server数据库中创建用户

时间:2016-02-13 07:55:43

标签: sql-server sql-server-2008 sql-server-2008-r2

我想在数据库中创建一个用户。我正在使用此存储过程来创建它:

CREATE PROCEDURE uspCreateUser
    @Name varchar(50)
AS
BEGIN 
   CREATE USER [@Name] 
   WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo]    
END

但是当我用

执行我的存储过程时
EXEC uspCreateUser 'anny'

这会在数据库中创建@Name的用户。

你能告诉我怎么解决这个问题?

此屏幕截图可以帮助您理解问题

My database security folder -- User

1 个答案:

答案 0 :(得分:2)

您可以使用动态SQL。通常,只要T-SQL语法不接受变量,动态SQL就可以提供解决方案。

CREATE PROCEDURE uspCreateUser
    @Name varchar(50)
AS
BEGIN 
    DECLARE @sqlstr nvarchar(max) = 'CREATE USER '+ @Name 
        +' WITHOUT LOGIN WITH DEFAULT_SCHEMA=[dbo]'
    EXECUTE sp_executesql @sqlstr
END
GO

EXEC uspCreateUser 'anny';

您可以在以下网址找到更多信息:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/62982480-e7b0-4729-87a7-c0c6f27c7f45/create-sql-user-with-username-password-parameters?forum=transactsql

http://www.sqlservercentral.com/Forums/Topic497615-359-1.aspx