Trabalhando com segurança no SQL Server 2008, estou tentando conceder permissões de CREATE TABLE a um usuário, 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 conseguiu criar uma tabela dentro do 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
fonte
A concessão de permissão para criar tabelas para um usuário específico em um banco de dados específico não apenas requer permissões CREATE TABLE, mas também requer permissões ALTER para o esquema, por exemplo, DBO.
Por exemplo;
fonte
Não há nada sobre essa permissão na documentação de permissões aplicáveis aos esquemas no 2008 R2: http://msdn.microsoft.com/en-us/library/ms187940.aspx
Portanto, eu concluiria: não, você não pode, criar tabela só pode ser controlado no nível do banco de dados (isso parece se aplicar a todos os protegíveis).
fonte
Certamente você pode. Se você tiver usuário1, defina seu esquema padrão como usuário1 também. Conceda a CREATE TABLE nas permissões do banco de dados a esse usuário. É isso aí. O usuário1 pode criar apenas tabelas no esquema do usuário1.
fonte