로그인, 역할, 사용자 등의 이름 충돌 type
을 처리하려면 Microsoft sys.database_principals 설명서 에 따라 열을 확인해야 합니다
사용자 이름 등, 사용 특별한 chacters 처리하기 위해, N'<name>'
그리고 [<name>]
그에 따라합니다.
로그인 생성
USE MASTER
IF NOT EXISTS (SELECT 1 FROM master.sys.server_principals WHERE
[name] = N'<loginname>' and [type] IN ('C','E', 'G', 'K', 'S', 'U'))
CREATE LOGIN [<loginname>] <further parameters>
데이터베이스 사용자 생성
USE <databasename>
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE
[name] = N'<username>' and [type] IN ('C','E', 'G', 'K', 'S', 'U'))
CREATE USER [<username>] FOR LOGIN [<loginname>]
데이터베이스 역할 생성
USE <databasename>
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE
[name] = N'<rolename>' and Type = 'R')
CREATE ROLE [<rolename>]
역할에 사용자 추가
USE <databasename>
EXEC sp_addrolemember N'<rolename>', N'<username>'
역할에 대한 권한 부여
USE <databasename>
GRANT SELECT ON [<tablename>] TO [<rolename>]
GRANT UPDATE ON [<tablename>] ([<columnname>]) TO [<rolename>]
GRANT EXECUTE ON [<procedurename>] TO [<rolename>]