Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как запретить QUOTED_IDENTIFIER OFF  [new]
valv
Member

Откуда:
Сообщений: 122
добрый день,
имеются сервера MS SQL 2012 - MS SQL 2016.

если создать или пересоздать (alter) хранимую процедуру с QUOTED_IDENTIFIER OFF, то такая процедура не сможет вставить строку в таблицу с filtered indexes. при попытке вставки получаем ошибку "INSERT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'"

непонятно как и зачем, программисты изредка пересоздают процедуры с установленным QUOTED_IDENTIFIER OFF.
во время разработки эти проблемы отлавливаются автоматически, в продакшен версию не попадают.

крайне редко, но бывают случаи, когда sql код модифицируют прямо на продакшен.
из ssms и других клиентов, например toad.
alter proc при set QUOTED_IDENTIFIER OFF одной из процедур делает систему нерабочей.

вопрос: как запретить QUOTED_IDENTIFIER OFF на SQL сервере?
необходима полная невозможность создавать, пересоздавать любые sql объекты, или запусткать скрипты с QUOTED_IDENTIFIER OFF.
спасибо.
22 дек 16, 14:12    [20036694]     Ответить | Цитировать Сообщить модератору
 Re: как запретить QUOTED_IDENTIFIER OFF  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
valv,

не знаю можно ли запретить такое, но как вариант можете задачей повесить поиск
SELECT uses_ansi_nulls, uses_quoted_identifier FROM sys.sql_modules
22 дек 16, 14:24    [20036757]     Ответить | Цитировать Сообщить модератору
 Re: как запретить QUOTED_IDENTIFIER OFF  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
valv
вопрос: как запретить QUOTED_IDENTIFIER OFF на SQL сервере?
Никак.
valv
необходима полная невозможность создавать, пересоздавать любые sql объекты ... с QUOTED_IDENTIFIER OFF
Политики, DDL-триггер.
22 дек 16, 14:33    [20036801]     Ответить | Цитировать Сообщить модератору
 Re: как запретить QUOTED_IDENTIFIER OFF  [new]
valv
Member

Откуда:
Сообщений: 122
invm
valv
вопрос: как запретить QUOTED_IDENTIFIER OFF на SQL сервере?
Никак.
если не запретить изначально, возможно ли отловить процесс, который начал работать при QUOTED_IDENTIFIER OFF? или как-нибудь сигнализировать, что таой скрипт был запущен?
invm
valv
необходима полная невозможность создавать, пересоздавать любые sql объекты ... с QUOTED_IDENTIFIER OFF
Политики, DDL-триггер.
спасибо invm.
DDL триггер может предотвратить изменение sql объекта, но вот запуск скрипта с QUOTED_IDENTIFIER OFF не может. начал читать про Policy-Based Management. похоже, тоже работает только с объектами?
22 дек 16, 14:55    [20036912]     Ответить | Цитировать Сообщить модератору
 Re: как запретить QUOTED_IDENTIFIER OFF  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
valv
начал читать про Policy-Based Management. похоже, тоже работает только с объектами?

так же
22 дек 16, 14:58    [20036930]     Ответить | Цитировать Сообщить модератору
 Re: как запретить QUOTED_IDENTIFIER OFF  [new]
aleks2
Guest
Ващето, состояние QUOTED_IDENTIFIER хранится вместе с кодом процедур и прочих объектов.

Так, што можно пошукать "хде?" и тупо сканировать системное хранилище на предмет "запрещенных значений".
22 дек 16, 15:06    [20036987]     Ответить | Цитировать Сообщить модератору
 Re: как запретить QUOTED_IDENTIFIER OFF  [new]
aleks2
Guest
Даже рыть то сильно не надо
https://msdn.microsoft.com/en-us/library/ms175081(SQL.90).aspx
22 дек 16, 15:10    [20037014]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить