Работая с безопасностью в 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
источник
Предоставление разрешения на создание таблиц конкретному пользователю в конкретной базе данных не только требует разрешений CREATE TABLE, но также требует разрешений ALTER для схемы, например, DBO.
Например;
источник
В документации о разрешениях, применимых к схемам в 2008 R2, ничего нет о таком разрешении: http://msdn.microsoft.com/en-us/library/ms187940.aspx
Поэтому я бы пришел к выводу: нет, вы не можете, создание таблицы может контролироваться только на уровне базы данных (это может относиться ко всем защищаемым объектам).
источник
Что вы можете. Если у вас есть user1, то определите его схему по умолчанию как user1. Предоставьте этому пользователю разрешение CREATE TABLE в базе данных. Вот и все. user1 может создавать таблицы только в схеме user1.
источник