Предоставление разрешений на уровне таблицы в SQL Express 2005 - PullRequest
0 голосов
/ 01 марта 2011

Я создал логин для подключения к SQL SERVER.

create login bobLogin with password = 'bobpass' , default_database = bobDB

но когда я подключаюсь к серверу sql с помощью этого, он не подключается? потому что для этого нужен пользователь.

поэтому я создал пользователя:

create user bobDB_USER for login bobLogin

Затем я подключился к серверу sql с помощью bobLogin и попытался создать таблицу:

create table bobDbTable(eid int)

, которая дает разрешение на отказ;

так что я получил разрешение:

GRANT CREATE TABLE TO bobDB_USER 

затем я снова подключился, используя bobLogin, и попытался создать таблицу, но выдал ошибку:

Указанное имя схемы "dbo" либо не существует, либо у вас нет разрешения на его использование.

почему так? это создание таблицы в схеме dbo, вот почему? так как я могу дать ему это разрешение?

Я не хочу создавать новую схему. это нужно?

1 Ответ

1 голос
/ 01 марта 2011

Вам потребуется GRANT ALTER ON SCHEMA::dbo TO bobDB_USER, чтобы разрешить создание объектов в схеме dbo.

Я бы тоже использовал Роль.

create role bobDB_ROLE
EXEC sp_addrolemember 'bobDB_ROLE', 'bobDB_USER'
GRANT ALTER ON SCHEMA::dbo TO bobDB_ROLE

Однако вы можете добавить bobDB_USER в db_owner, если для этого требуются эти права

EXEC sp_addrolemember 'db_owner', 'bobDB_USER'

Примечание: права конечного пользователя сильно отличаются от прав типа администратора. Если 'bobDB_USER' является конечным пользователем, он не должен создавать объекты

...