2016-02-13 44 views
1

我想在数据库中创建用户。而我使用这个存储过程来创建它:在SQL Server数据库中创建用户

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

回答

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

+0

给予好评的答案thnks和标志 –

相关问题