Створити роль бази даних, щоб дозволити читати доступ до всіх таблиць; написати доступ до деяких


9

У нас є база даних з понад 1000 таблиць. Мені потрібно створити роль, яка дозволяє читати лише на всіх таблицях, а також записувати доступ до двох конкретних таблиць.

Я заплутався з ролями бази даних, але щоразу, коли я йшов додавати таблиці, мені доводилося вибирати всі 1000 ... чи є кращий спосіб це зробити?


Це насправді може бути найпростішим способом ... Чи є спосіб, щоб це сценарій? Мені потрібно зберегти набір сценаріїв, коли ми оновлюємо одну з цих баз даних, я можу отримати всі налаштування миттєво назад.
Уес

Відповіді:


9

Надання дозволів на схему (наприклад dbo) буде каскадною для всіх об'єктів цієї схеми. За окремими винятками ви можете просто перелічити їх чітко:

GRANT SELECT ON SCHEMA::dbo TO [role];
GO

GRANT INSERT, UPDATE --, DELETE
  ON dbo.table_they_can_write_to TO [role];

DENY SELECT ON dbo.table_they_cannot_read TO [role];

3
Досить просто. Радий, що у нас є така громада.
Уес

1

Спробуйте це :

EXEC sp_MSForEachTable 'GRANT INSERT, UPDATE ON ? to [ROLE]'

3
FYI це дає можливість запису, але не має доступу для читання до всіх таблиць, а також повністю ігнорує схему. Також sp_MSForEachTableє недокументованим, непідтримуваним і, можливо, страждає тими ж проблемами, що й пропускsp_MSForEachDB .
Аарон Бертран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.