У меня проблема с настройкой VIEW DEFINITION
разрешения на уровне схемы для одного из моих пользователей. Я создал схему TestSchema
и добавил несколько таблиц. Пользователь в настоящее время имеет право устанавливать для доступа и изменение таблицы ( SELECT
, UPDATE
, DELETE
, и т.д.) через dbo_datareader
и dbo_datawriter
роли. Однако они не могут видеть ни одну из таблиц в проводнике объектов SSMS.
Я пытался предоставить разрешения для просмотра определений:
grant view definition on SCHEMA :: [TestSchema] to [User]
Это не сработало. Я попытался установить разрешение на уровне таблицы:
grant view definition on [TestSchema].[NewTable] to [User]
Это тоже не сработало. Тогда я попробовал просто грант грант:
grant view definition to [User]
И это сработало; теперь они могут видеть TestSchema
, как и другие схемы, к которым у них не должно быть доступа.
Моя цель здесь - позволить пользователю просматривать все таблицы в данной схеме. Как мне это сделать? Если я должен быть в состоянии сделать это по умолчанию, какие разрешения я должен искать на то, чтобы найти , почему я не могу?
Ответы:
Краткий ответ: не используйте
db_datareader
илиdb_datawriter
или их отрицание эквивалентов. Они только для обратной совместимости. Их использование вызовет проблемы, подобные той, с которой вы столкнулись.Если вы хотите дать основной Алисе разрешения SELECT, INSERT, UPDATE и DELETE для всех табличных объектов в схеме Sales, используйте следующее.
Если вы хотите дать основной Алисе разрешения SELECT, INSERT, UPDATE и DELETE для всех табличных объектов во всех схемах, используйте следующее.
Видимость метаданных будет работать правильно.
источник
Взгляните на принципалов, другие разрешения, где-то там может быть отказ в том, что вызывает проблему. Помните, что отказ всегда будет применяться поверх гранта. И поскольку это не ваш сервер, в учетной записи, которую настроил отдел ИТ, может что-то случиться.
Используйте что-то подобное для уровня сервера:
И что-то подобное на уровне базы данных
источник
Это произошло со мной, когда я обновил наш SQL Server с 2008R2 до 2014 года. Db_datareader или db_datawriter или их отрицательные эквиваленты прекрасно работают в 2008R2, но они не работают в 2014 году.
Пример предоставления разрешения в SQL Server 2014
Если вы хотите дать пользователю Алиса права SELECT, INSERT, UPDATE и DELETE для всех табличных объектов в схеме Sales, используйте следующее.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: Продажи Алисе; Если вы хотите дать основной Алисе разрешения SELECT, INSERT, UPDATE и DELETE для всех табличных объектов во всех схемах, используйте следующее.
GRANT SELECT, INSERT, UPDATE, DELETE TO Alice; Видимость метаданных будет работать правильно.
источник