У нас есть сервер, на котором работает SQL Server 2008. Когда мы подключаемся к нему с помощью SSMS с некоторыми входами (из SSMS 2008), становится доступен Intellisense. Для других это не так. Рассматриваемые логины подключаются к одной и той же базе данных, и между сеансами SSMS ничего не меняется, кроме имени входа, используемого для подключения.
Если я подключаюсь как логин, который является членом db_owner, Intellisense работает. Если я подключаюсь как логин, которого нет в db_owner, но который имеет привилегии «Просмотр определения», Intellisense работает. Если я подключаюсь как логин, которого нет ни в db_owner, ни с правами «Просмотр определения», Intellisense не работает.
Итак, я попытался предоставить этой базе данных права третьего входа «Просмотр определения», думая, что они получат Intellisense. Не повезло. Третий логин имеет доступ к двум другим базам данных. Во всех трех базах данных этот логин является членом роли db_datareader, но не является членом других ролей (и не имеет права «Просмотр определения»). В этих двух других базах данных этот логин получает Intellisense. В основной базе данных этого не происходит.
Мне кажется, что есть некоторые настройки / разрешения для каждой базы данных и входа в систему, которые позволяют Intellisense, но до сих пор мне не удалось это отследить.
Любые идеи?
Это одновременно и разрешение, и «Просмотр определения». Вы не можете просмотреть определение того, на что у вас нет разрешений, из-за видимость метаданных. Итак, для разрешений ...
db_owner также является обертка для разрешений CONTROL, аналогично ddl_admin и другим правам. К тому же
Увидеть актуальный права, необходимые для запроса sys.database_permissions. Например, ГРАНТ ИЗМЕНЕНИЕ СХЕМЫ есть отдельные фиксированные роли базы данных (ALTER ANY SCHEMA, конечно же, ddl_admin).
Это сложнее, чем раньше :-)
К вашему сведению: вы получаете полезные вещи, такие как GRANT ALTER TRACE, который позволяет профилировщику без сисадмин извините КОНТРОЛЬНЫЙ СЕРВЕР