2016-07-04 5 views
0

Я использую Flyway для управления версиями базы данных для базы данных SQL Server 2014. У меня есть 800 хранимых процедур.QUOTED_IDENTIFIER задерживается в некоторых хранимых процедурах при переносе 800+ хранимых процедур с использованием Flyway

В начальной миграции для около 394 хранимых процедур QUOTED_IDENTIFIER установлено на OFF. Но когда я переношу его отдельно, имея в качестве единственной хранимой процедуры, тогда QUOTED_IDENTIFIER установлен в ON.

Всегда значением по умолчанию QUOTED_IDENTIFIER является ON.

Я попытался установить значение QUOTED_IDENTIFIER (QUOTED_IDENTIFIER=ON) в JTDS строка подключения, но не используется.

Есть ли обходной путь для этого?

ответ

1

Quoted_Identifier и Ansi_Nulls и еще несколько причудливых атрибутов являются «липкими». Текущее состояние Quoted_Identifier (в сеансе) управляет тем, что «придерживается» недавно введенной процедуры или функции по мере их создания. Некоторые инструменты лучше, а некоторые хуже написано о настройке, которая должна быть вставлена ​​как раз перед в create procedure или create function заявления. Вы можете увидеть или не увидеть сгенерированный оператор, когда смотрите на источник в db ... зависит от используемого вами инструментария.

Эти атрибуты записываются в sys.sql_modules, который имеет исходный текст и состояние uses_ansi_nulls и uses_quoted_identifier и другие липкие атрибуты. Вы можете использовать эти флаги, чтобы знать, как выполнять скрипт вне любой процедуры перед процедурой и/или функцией.

+0

Мне интересно, почему атрибут 'Quoted_Identifier' установлен в' OFF' только для некоторых хранимых процедур. Например, если я выполняю 46 хранимых процедур 6 из этих процедур, атрибут Quoted_Identifier' равен 'OFF'. Есть ли безопасный способ установить значение 'Quoted_Identifier' для' ON' для хранимой процедуры во время создания, если значение специально не установлено в 'OFF'? – zeee

+0

Если вы не вызываете 'set quoted_identifier on' перед опцией' create procedure', процедура наследуется от текущих настроек соединения. Эти настройки часто «заражаются» разными людьми (повторно), создавая процедуры, не заботясь об этих липких атрибутах. Если кто-то запускает 'alter procedure', он также подберет настройки окружающего мира. – Clay