2011-02-14 6 views
4

assgin 내가 변수 이름사용자 동적 이름을 만들고 역할

예를 동적 이름을 가진 사용자를 생성해야합니다

다음 코드에 구문 오류가 있습니다.

Create Login @User_name WITH PASSWORD @password; 
       USE database; 

와 내가 만든 사용자에 대한 역할을 할당해야 ..

+0

여기에 설명되어 있습니다. http://stackoverflow.com/questions/837358/sql-create-logon-cant-use-parameter-as-username –

+1

위의 주석에있는 링크가있는 그대로 작동하지 않습니다. 업데이트 된 답변이 추가되었습니다. –

답변

5

개체 이름에 변수를 사용할 수 없습니다. 당신은

exec sp_addlogin @User_name, @password; 

속임수 어느 쪽이든 또는 동적 SQL을 구성하지만, SQL 주입을 방지하기 위해 QUOTENAME를 사용해야 할 수 있습니다.

+1

SQL Server 2005 이후로이 Stored Proc는 더 이상 사용되지 않습니다. CREATE LOGIN으로 동적 SQL을 사용하는 것이 좋습니다. – MaxiWheat

7

당신은 변수 로그인을 생성 할 수 없습니다. 문을 동적으로 생성하거나 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) 
관련 문제