Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 защитить колонки таблицы от изменения руками  [new]
ИзяКац
Guest
есть таблица, в ней ряд счетчиков, актуальность которых поддерживается триггерами,
как сделать так, чтобы пользователь не мог менять руками значения счетчиков?
15 ноя 13, 11:37    [15134376]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
Glory
Member

Откуда:
Сообщений: 104751
ИзяКац
чтобы пользователь не мог менять руками значения счетчиков?

Руками - это чтобы он не отрыл файл данных в Notepad-е что ли ?
15 ноя 13, 11:50    [15134543]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Отобрать у пользователей права на обновление этих столбцов:
DENY UPDATE ON dbo.MyTable (Column_1, Column_2, Column_3) TO MyUser

Добавить в триггер "EXECUTE AS" с нужными правами.
15 ноя 13, 11:53    [15134568]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
ИзяКац
есть таблица, в ней ряд счетчиков, актуальность которых поддерживается триггерами,
как сделать так, чтобы пользователь не мог менять руками значения счетчиков?
Для начала, лишить пользователей возможности напрямую менять данные в таблицах.
15 ноя 13, 11:55    [15134587]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
ИзяКац
Guest
Glory,

чтобы триггер мог делать

update t set __cnt = __cnt + 1;

А пользователь, написав где либо

update t set __cnt = __cnt + 1;

получил бы error.

но при этом

update t set data = 'dwdwdwd';

отработал бы ок
15 ноя 13, 11:57    [15134605]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
ИзяКац
Guest
Гость333, invm спасибо вам большое.

invm, намекаете на view + instead of triggers?
15 ноя 13, 11:58    [15134625]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
Glory
Member

Откуда:
Сообщений: 104751
ИзяКац
А пользователь, написав где либо

update t set __cnt = __cnt + 1;

получил бы error.

Начните с выяснения того, откуда у вашего пользователя права на выполнения update t
Просто так такие права не появляются.
15 ноя 13, 11:59    [15134629]     Ответить | Цитировать Сообщить модератору
 Re: защитить колонки таблицы от изменения руками  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
ИзяКац
invm, намекаете на view + instead of triggers?
Один из вариантов. А можно просто попробовать вынести счетчики в индексированное представление.
15 ноя 13, 12:34    [15135006]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить