Pouria Polouk Ответов: 2

Предоставление разрешения на уровне базы данных


Всем привет.
Я использую SQL Server 2014.
Я написал 2 кода для предоставления разрешения.
Пожалуйста, смотрите коды ниже.

какая между ними разница?
с уважением.

Что я уже пробовал:

1)
используйте база данных testdb
идти
гранта переделать логин

2)
используйте база данных testdb
идти
грант Алтер на базе::база данных testdb, чтобы имя пользователя

[no name]

Что значит "в чем разница"? Одно сработает, а другое нет?

Pouria Polouk

Оба они работают.
И оба предоставляют разрешение всем объектам на уровне базы данных.
Я просто не вижу разницы.

[no name]

А почему бы и нет? Просто посмотрите на них, и вы увидите разницу. Во-вторых, вы написали ненужные команды.

Pouria Polouk

Извините, но я не совсем уверен.
Что вы подразумеваете под"ненужным"?
Так почему же Microsoft использует их оба?

2 Ответов

Рейтинг:
6

Karthik_Mahalingam

Оба делают одну и ту же операцию

GRANT ALTER TO ПОЛЬЗОВАТЕЛЬ дает ли разрешение alter на все объекты конкретному пользователь

GRANT ALTER ON используется для предоставления разрешения на определенную схему, см. Предоставление разрешений на схему (Transact-SQL)[^]


Pouria Polouk

спасибо

Karthik_Mahalingam

Добро пожаловать

Рейтинг:
0

Wendelius

Во втором операторе вы явно определяете класс (базу данных), для которого предоставляете привилегии. Рассмотрим пример, когда у вас есть объект с именем Test в базе данных с именем Test. Без определения класса может быть неясно, для какого класса вы собираетесь предоставить разрешения.

Возможно, это проще всего понять, посмотрев на сообщения об ошибках для недопустимого оператора GRANT
Следующий оператор

GRANT ALTER ON NotExisting TO SomeOne

будет производить
Msg 15151, Level 16, State 1, Line 4
Cannot find the object 'NotExisting', because it does not exist or you do not have permission.

пока
GRANT ALTER ON database::NotExisting TO SomeOne

будет выводить
Msg 15151, Level 16, State 1, Line 6
Cannot find the database 'NotExisting', because it does not exist or you do not have permission.

В вашем первом примере вы не определяете никакой защищаемой базы данных, поэтому база данных используется по умолчанию.


Pouria Polouk

Спасибо за внимание.
Но я не думаю, что вы поняли мой вопрос!