#title 로그인/사용자/스키마/권한 예제
[[TableOfContents]]

==== 로그인 ====
{{{
--로그인 생성
USE master;

IF EXISTS (SELECT * FROM sys.server_principals WHERE name = 'yasicom')
	DROP LOGIN yasicom;

CREATE LOGIN yasicom
WITH 
	PASSWORD = 'pw1234!@#$' 
,	DEFAULT_DATABASE = tempdb
,	CHECK_EXPIRATION = OFF
,	CHECK_POLICY = OFF;
GO	
}}}

==== 스키마 ====
{{{
--스키마 생성
USE tempdb;

IF EXISTS(SELECT * FROM sys.schemas WHERE name = 'TestSchema')
	DROP SCHEMA PubDiv;
GO

CREATE SCHEMA TestSchema
GO

--alter schema dbo transfer ABC.TableAAA
}}}

==== 사용자 및 권한부여 ====
{{{
--사용자 생성
IF EXISTS(select * from sys.database_principals WHERE name = 'yasicom')
	DROP USER yasicom;
GO

CREATE USER yasicom FOR LOGIN yasicom
WITH DEFAULT_SCHEMA = TestSchema;
GO

--권한부여
GRANT SELECT ON SCHEMA::TestSchema TO yasicom;
GO

/*
DB소유자인 경우
EXEC sp_addrolemember 'db_owner', '사용자명'
GO
*/
}}}

==== 테스트 ====
{{{
--테스트
CREATE TABLE TestSchema.Test(nm varchar(20));
INSERT TestSchema.Test VALUES('Hello World!');

--사용자변경:yasicom
EXECUTE AS USER = 'yasicom';
SELECT USER_NAME(); --yasicom

SELECT * FROM TestSchema.Test

--사용자변경:dbo
REVERT
SELECT USER_NAME(); --dbo
}}}

==== 참고 ====
소유자 문제..
{{{
ALTER AUTHORIZATION ON Database::XXXX TO sa;
}}}