Com o SQL Server (2008), você pode conceder permissão para criar tabela em um esquema?

14

Trabalhando com segurança no SQL Server 2008, estou tentando conceder permissões de usuário CREATE TABLE, mas apenas dentro de um esquema específico. A permissão CREATE TABLE se aplica apenas no nível do banco de dados?

Posso limitar o usuário a criar tabela apenas dentro de um esquema?

Eu tentei:

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

e

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

Mas o usuário ainda não consegue criar uma tabela no esquema de destino. Não é até eu executar isso, que o usuário pode criar uma tabela:

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

CONCESSÃO

Permissões de banco de dados GRANT

    
por RyanW 28.03.2011 / 18:36

4 respostas

12

De acordo com a ajuda do SQL Server 2008:

Requires CREATE TABLE permission in the database and ALTER permission on the schema in which the table is being created.

Acabei de testar isso usando EXECUTE AS em um banco de dados de teste e consegui criar uma tabela no esquema que tinha permissão ALTER, mas não no esquema dbo (para o qual não concedi permissão ALTER). Então, desde que você não tenha liberado demais a permissão ALTER nos esquemas, essa deve ser a maneira de fazê-lo.

    
por 28.03.2011 / 19:19
6

A concessão de permissão para criar tabelas para um usuário específico em um banco de dados específico requer não apenas permissões CREATE TABLE, mas também permissões ALTER para o esquema, por exemplo, DBO.

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

Por exemplo:

USE db_mydatabase
GRANT ALTER ON Schema :: DBO TO user_mydatabase
GRANT CREATE TABLE TO user_mydatabase
GO
    
por 19.08.2011 / 12:00
1

Não há nada sobre essa permissão na documentação de permissões aplicáveis a esquemas no 2008 R2: link

Portanto, eu concluiria: não, você não pode, criar tabela só pode ser controlada em um nível de banco de dados (isso parece se aplicar a todos os produtos de segurança).

    
por 28.03.2011 / 19:15
0

Claro que você pode. Se você tiver user1, defina seu esquema padrão como user1 também. Conceda o CREATE TABLE em permissões de banco de dados para esse usuário. É isso aí. user1 só pode criar tabelas dentro do esquema user1.

    
por 12.04.2011 / 13:43