Вы не можете предотвратить доступ системного администратора к данным, а также не должны.
Однако никто, кроме назначенного dba, не должен иметь пароль для учетной записи sa. Если у sa нет пароля или у многих людей есть пароль, измените это сейчас. Если приложение обращается через sa, немедленно измените его.
Кроме того, вы можете наилучшим образом ограничить доступ, чтобы удалить доступ ко всем другим учетным записям из таблиц и представлений (включая выбор доступа) и разрешить доступ только exec через хранимые процедуры. Таким образом, любой, кроме назначенного администратора, может делать только то, что хранится в procs, и ничего больше. Вы не можете этого сделать, однако, если вы использовали какой-либо динамический sql либо в приложении, либо в хранимых процедурах, что является одной из причин, почему динамический sql является плохой идеей.
, поэтому, если у пользователя нет доступа SELECT в определенной таблице, но имеет доступ EXEC к хранимой процедуре, которая делает SELECT из той же таблицы, пользователь может видеть данные? –
Да, но только через хранимую процедуру. – MartW
Да, вы правы. –