В нашем приложении .net есть инструмент, позволяющий набирать SQL в браузере и отправлять его для тестирования.В этом контексте, однако, мне нужно иметь возможность запретить тестировщикам писать в конкретные таблицы.Итак, основываясь на параметре, переданном из контроллера (InSupportTool = true или что-то), мне нужно знать, разрешено ли SQL Server делать обновления или вставки, скажем, в таблицу учетных записей.
Вещи, которые я пробовал до сих пор:
Я пытался изучить триггеры, но нет доступного триггера before
, и я слышал, что люди не рекомендуютиспользуя их, если вы можете помочь.
Анализ переданной строки SQL для поиска ссылок на вставку или обновление в этой таблице.Это еще более хрупко, и я уверен, что есть бесчисленное множество способов обойти его, если кто-то захочет.
Проверьте ограничение, которое, как мне кажется, является самым близким, которое я получил, ноЯ не могу собрать все вместе.
Для проверочных ограничений у меня есть это:
ALTER TABLE Accounts WITH NOCHECK
ADD CONSTRAINT chk_read_only_accounts CHECK(*somehow this needs to be dynamic based on parameters passed from C# controller*)
Вышеприведенное работает для предотвращения обновления этой таблицы, но толькоесли я поставлю чек, как 1 = 0
.Я видел пост, где люди говорили, что вы можете использовать функцию в качестве проверки и таким образом передавать параметры, но я нахожусь на пределе моего знакомства с SQL / .net.
Учитывая то, что я 'я хочу сделать, кто-нибудь имеет опыт с чем-то вроде этого?Спасибо!