Опублікуйте це як відповідь лише тому, що це занадто довго для коментарів, і тому, що воно буде відносно інших користувачів досить скоро.
SQL Server 2014 додає нові дозволи на рівні сервера, які допоможуть точно використовувати такий тип сценаріїв - вони були розроблені з урахуванням аудиту, але цей тип вимог, як видається, відповідає і цьому законопроекту. Ви можете просто додати наступні два дозволи до входу на рівні сервера:
CONNECT ANY DATABASE
SELECT ALL USER SECURABLES
Колишній, як це звучить, дозволяє логіну підключитися до будь-якої бази даних. Приємно в тому, що це дозволить це навіть для баз даних, які створюються в майбутньому (за умови, що ви не встановлюєте явного заперечення, тобто ви можете захистити певні бази даних від логінів, які мають цей дозвіл). Останнє дозволяє логіну виконувати операції зчитування в будь-якій базі даних, до якої вони мають доступ - тому вони можуть робити SELECT
з таблиць, представлень даних, UDF тощо, але вони не зможуть виконувати жодних UPDATE
операцій (я не перевіряв, чи розуміє цей дозвіл, коли збережена процедура виконує DML). Вони чудово працюють в поєднанні, якщо ви хочете надати широко відкритий доступ для читання для входу на весь сервер або бути більш точним, ви можете надати традиційні CONNECT
привілеї певним базам даних, і SELECT ALL USER SECURABLES
правильно будефункція лише для тих баз даних, до яких вхід має явний доступ.
Зміни безпеки 2014 року тут задокументовані - ну частково; вони забули про дозвіл на рівні бази даних, ALTER ANY DATABASE EVENT SESSION
хоча це тут не актуально.