2010. 12. 25. 15:56

MSSQL2000에서는 권한설정을 하면 SQL을 기준으로 권한을 주었습니다.
예를 들면 검색권한을 주고싶으면 select 권한을 주는 식으로 필요한 권한을 체크해주는 식이였죠.

그래서 MSSQL2005왔을때 많이 해맸습니다-_-;;;

어찌됫건 MSSQL2005와서 권한 설정의 가장큰 변화는 로그인권한과 데이터베이스 사용권한을 따로 생성해야하는 것인거 같습니다.

MSSQL2000때는 로그인권한을 가진 유저를 각DB에 추가시키는 방식으로 권한을 주었지만
MSSQL2005부터는 로그인권한을 가진 유저를 만든후 DB에 유저를 추가시킨다음 만든 로그인과 연결된 권한을 생성하는 방식입니다.
C#으로 보자면 인스턴스를 만들어서 접근하는 것과 비슷한거 같습니다.
간단하게 말하자면 로그인하는 계정과 DB를 사용하는 계정을 따로 생성해야 한다는 것입니다.


로그인 계정을 만드는 것은 MSSQL2000때와 같습니다.
보안>로그인 에서 새 로그인을 만들어주면 됩니다.

이제 DB로 가서 보안>사용자 새 사용자를 추가합니다.
사용자이름을 추가하고 아까만든 로그인(로그인 이름)을 설정해 줍니다.

기본 스키마는 자신보다 높은 권한을 가진 스키마를 설정해야 합니다.
디폴트로 dbo로 되있는데 dbo의 정보를 보면 오너 권한이 있는걸 알수있습니다.
사용자를 만들면 자동으로 스키마도 생성해주므로 필요하다면 다른 스키마를 선택해도 됩니다.

밑에보면 데이터베이스 역할 멤버 자격 이라는 칸이 있는데 이것이 예전의 권한설정과 동일합니다.




MSSQL2000과 많이 달라진 것중하나가 권한설정 부분입니다..
어디서 본것 같다했는데.....오라클할때 배운거 같습니다;;

권한을 설명하자면 

역할 멤버

설명

db_accessadmin

Windows 로그인, Windows 그룹 및 SQL Server 로그인에 대한 액세스를 추가하거나 제거할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms191451(SQL.90).aspx

설명으로 봐서는 로그인에 대한 계정을 추가 삭제할수 있는 권한입니다.

db_backupoperator

데이터베이스를 백업할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms189041(SQL.90).aspx

말그대로 DB를 빽업할 수 있습니다.

db_datareader

데이터베이스에 있는 테이블이나 뷰에 대해 SELECT 문을 실행할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms188629(sql.90).aspx

보통 이 권한을 염두하고 프로그램을 만들었으니 변환한 DB의 사용자는 거의 이 권한으로 주었습니다.

db_datawriter

모든 사용자 테이블에서 데이터를 추가, 삭제 또는 변경할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms175039(SQL.90).aspx

MSSQL2000 에서는 안써본기능이라 잘 모르겠습니다;;;

db_ddladmin

데이터베이스에서 모든 DDL(데이터 정의 언어) 명령을 실행할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms190667(SQL.90).aspx

데이터 정의어로 오라클에서는 테이블을 생성,삭제,변경할 수 있는 권한이었는데 여기서도 그런거 같습니다.

db_denydatareader

데이터베이스 내에 있는 사용자 테이블의 데이터를 읽을 수 없습니다.

http://technet.microsoft.com/ko-kr/library/ms187916(SQL.90).aspx

어디에 쓰이는지 모르겠네요;;

db_denydatawriter

데이터베이스 내의 사용자 테이블에 있는 데이터를 추가, 수정 또는 삭제할 수 없습니다.

http://technet.microsoft.com/ko-kr/library/ms188308(SQL.90).aspx

안써봐서 모르겠습니다.;;

db_owner

데이터베이스에서 모든 구성 및 유지 관리 작업을 수행할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms180977(SQL.90).aspx

개발할 때 이 권한을 주면 편합니다 ㅡ.-;;;

db_securityadmin

역할 멤버 자격을 수정하고 사용 권한을 관리할 수 있습니다.

http://technet.microsoft.com/ko-kr/library/ms188685(SQL.90).aspx

Database Roles에서 사용자를 추가, 삭제, 객체사용권한등을 변경할 수 있습니다,

Public

사용자를 만들면 들어가있는 권한

 

어디에 쓰이는 권한인지는 모르겠습니다.

이렇게 역할 멤버 자격까지 주면 사용자가 추가하면 됩니다.

저장프로시저를 이용하기위해서는 전처럼 하나하나에 권한을 추가해주어야 합니다.

1.프로그래밍 기능<저장 프로시저 에서 해당 저장프로시저에서 오른쪽 클릭을 하여  속성을 눌러 속성창을 엽니다.
2.사용권한에 보면 사용자 또는 역할이 있는데 아까 만들었던 사용자(로그인이 아님)를 추가하고 Execute권한에 체크를 합니다.
스키마 밑에 보면 '스키마 사용 권한 보기'라는 것이 있는 이것을 누르면 연결된 스키마의 권한 정보가 나옵니다.
여기서 로그인 사용자를 누르고 Execute권한에 체크를 합니다.(어느 사이트의 설명에서는 권한을 위임받아서 사용한다고 되있었다.)
유효 사용 권한을 눌러보면 연결이 제대로 됬는지 확인해 볼수 있습니다.

좀 복잡한 느낌은 들지만 나는 어차피 테이블을 다 만들어놓고 그것에 마쳐 프로그래밍을 하기때문에 어차피 쓰는권한은 한정되있으니 별로 걱정은 되지 않지만....예상보다 구하기 힘든 자료에 당황스러웠습니다;;;(도움말이 이렇게 허접하게 느껴질줄이야-_-;;)

이제 완벽하니 다음 포맷때는 삽질 말아야죠 ㅎㅎㅎ