Избегайте использования параметра WITH ENCRYPTION
, кроме как для очень определенных требований. Это может привести к административным проблемам позже.
Использование WITH ENCRYPTION
не рекомендуется для сокрытия определения / кода объекта. К счастью, есть альтернативный подход для SQL Server.
Если требуется скрыть определение / код какого-либо объекта от пользователя, то для этой цели можно использовать стандартные разрешения. Это может быть сделано путем предоставления или отзыва прав на определение вида.
Если разрешение View Definition отклонено для объекта любому пользователю, тогда пользователь не сможет просматривать объект в SSMS или просматривать его код с помощью системной хранимой процедуры sp_helptext
.
Разрешение View Definition может также использоваться для других объектов в SQL Server, таких как таблицы, синонимы и т. Д. Разрешения View Definition могут быть предоставлены или запрещены с использованием T-SQL
или SSMS
Для реализации разрешений через SSMS:
- Щелкните правой кнопкой мыши объект, необходимый для скрытия определения
- Нажмите «Свойства», появится рамка, выберите «Предоставить или запретить разрешение на просмотр определения» для объекта для выбранного пользователя или роли.
Запрет разрешения View Definition
скроет объект для определенного пользователя, а также пользователь не сможет увидеть определение с помощью sp_helptext
Другие разрешения, такие как SELECT, INSERT
и т. Д., Останутся без изменений.
Разрешения являются гибкими и могут быть реализованы на следующих четырех уровнях:
- Уровень сервера. На уровне сервера это разрешение будет отображаться как Просмотр любого определения
2. Уровень базы данных
- Уровень схемы
- Уровень индивидуального лица
Спасибо, надеюсь, это прояснит ситуацию.