SQL Server (2008)를 사용하면 스키마 내에서 테이블 만들기 권한을 부여 할 수 있습니까?


14

SQL Server 2008의 보안을 사용하여 특정 스키마 내에서만 사용자에게 CREATE TABLE 권한을 부여하려고합니다. CREATE TABLE 권한은 데이터베이스 수준에서만 적용됩니까?

사용자가 스키마 내에서만 테이블을 작성하도록 제한 할 수 있습니까?

난 노력 했어:

USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO

USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO

그러나 사용자는 여전히 대상 스키마 내에서 테이블을 작성할 수 없습니다. 이 작업을 실행할 때까지는 아닙니다. 사용자가 테이블을 만들 수 있습니다.

USE [databasename]
GRANT CREATE TABLE to [username]
GO

부여

GRANT 데이터베이스 권한

답변:


12

SQL Server 2008 도움말에 따르면 :

데이터베이스에서 CREATE TABLE 권한과 테이블을 작성하는 스키마에 대한 ALTER 권한이 필요합니다.

방금 테스트 데이터베이스에서 EXECUTE AS를 사용하여 이것을 테스트했으며 ALTER 권한이 있지만 dbo 스키마가 아닌 (ALTER 권한을 부여하지 않은) 스키마에서 테이블을 만들 수있었습니다. 따라서 스키마에 대한 ALTER 권한으로 너무 자유 로워지지 않는 한 그렇게하는 것이 좋습니다.


1
네, 지금 봅니다. 사용자에게 데이터베이스 레벨 "CREATE TABLE"권한이 있지만 다른 권한이 부여되지 않은 스키마에서 테이블을 작성할 수 없습니다.
RyanW

이 시나리오를 사용하려면 담요 CREATE TABLE 권한을 부여해야한다는 것은 불행한 일입니다.
MgSam

6

특정 데이터베이스에서 특정 사용자에게 테이블을 작성할 수있는 권한을 부여하려면 CREATE TABLE 권한뿐만 아니라 스키마에 대한 ALTER 권한 (예 : DBO)이 필요합니다.

USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GRANT CREATE TABLE TO [username]
GO

예를 들어;

USE db_mydatabase
GRANT ALTER ON Schema :: DBO TO user_mydatabase
GRANT CREATE TABLE TO user_mydatabase
GO

1

2008 R2의 스키마에 적용 할 수있는 사용 권한 설명서에는 이러한 사용 권한이 없습니다. http://msdn.microsoft.com/en-us/library/ms187940.aspx

따라서 결론을 내릴 수는 없습니다. 아니요, 테이블 생성은 데이터베이스 수준에서만 제어 할 수 있습니다 (이는 모든 보안 가능 항목에 적용되는 것으로 나타남).


고마워, 나는 그 수준에 대해 아무것도 없다고 동의한다. @ db2가 지적했듯이, 데이터베이스 레벨 "CREATE TABLE"권한으로는 스키마에 대한 다른 권한이없는 사용자가 테이블을 작성할 수 없습니다.
RyanW

0

물론 넌 할 수있어. user1이있는 경우 기본 스키마를 user1로도 정의하십시오. 이 사용자에게 데이터베이스의 CREATE TABLE 권한을 부여하십시오. 그게 다야. user1은 user1 스키마 내에서만 테이블을 작성할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.