2012-11-30 3 views
1

SQL Server 2008의 특정 사용자에 대해 테이블 ​​집합에 대한 삭제 권한을 거부 할 수있는 방법이 있습니까? 사용자가 데이터베이스의 일부 테이블에서 데이터를 삭제할 수 없으며 특정 테이블 대신 트리거를 사용하지 않으려 고합니다. 내가 90 테이블을 가지고 테이블 원인 ??특정 테이블에서 삭제를 거부 할 수 있습니까?

+0

여기를 확인하십시오 : http://stackoverflow.com/questions/2988741/how-to-give-over-right-table-permission-in-sql-server-2008 – psur

답변

4

물론입니다!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere 

자세한 내용은 the wonderful and extensive MSDN Books Online docs을 참조하십시오. 당신이 테이블에 그룹화되는 방식으로 데이터베이스를 구축 한 경우

DENY DELETE TO YourUserNameHere 

또는 : 데이터베이스에서 모든 테이블에 DELETE 권한을 거부 할 경우

, 당신은 사용할 수 있습니다 schematas이면 특정 스키마에서 사용자를 거부 할 수도 있습니다.

별도의 스키마로 90 개 테이블을 그룹화하지 않은 경우

(또는 둘, 셋 schematas)를 선택한 다음 한 번에 90 개 테이블에 권한을 적용하기 쉬운, 마법의 방법없습니다. 모든 테이블, 특정 스키마 또는 특정 데이터베이스 개체 (예 : 테이블) DENY 문입니다.

업데이트 : 당신은 항상 당신을 위해 그 DENY 문을 생성하는 시스템 카탈로그 뷰를 사용하고 당신이 필요로하는 것들 사용할 수 있습니다

SELECT 
    'DENY DELETE ON ' + t.NAME + ' TO (youruser)' 
FROM sys.tables t 

이가 출력으로 생성합니다 (예 : SQL Server의 Management Studio) 사용자의 DELETE 권한을 거부하는 명령문 목록 해당 행을 텍스트 편집기에 복사하고 필요하지 않은 행을 제거하십시오. 거기에 DENY 명령문의 긴 목록이 있습니다!

+0

이것은 1 개의 테이블 일 것이고 then 90 tables –

+0

@puneet : 그렇다면 90 개의 DENY 문이 필요합니다 ... –

+0

하지만 다른 방법으로 1 개의 데이터베이스에 대해 90 개의 명령문을 작성한 다음 다른 데이터베이스 등에 대해 쓰고 싶습니다. –

관련 문제