使用Flyway迁移800多个存储过程时,QUOTED_IDENTIFIER在某些存储过程中被设置

时间:2016-07-04 20:05:41

标签: sql-server flyway jtds

我使用Flyway进行SQL Server 2014数据库的数据库版本控制。我有800多个存储过程。

在初始迁移中,对于大约394个存储过程,QUOTED_IDENTIFIER设置为OFF。但是当我将它作为唯一的存储过程单独迁移时,QUOTED_IDENTIFIER设置为ON

QUOTED_IDENTIFIER的默认值始终为ON

我尝试在QUOTED_IDENTIFIER连接字符串中设置QUOTED_IDENTIFIER=ON值(JTDS),但没有用。

这有什么解决方法吗?

1 个答案:

答案 0 :(得分:1)

Quoted_IdentifierAnsi_Nulls以及其他一些讨厌的属性都是“粘性的”。 Quoted_Identifier的当前状态(在会话中)控制在创建新引入的过程或函数时“坚持”的内容。有些工具更好,有些更糟糕的是将插入之前的插入create procedurecreate function语句。当您查看数据库中的源时,您可能会看到生成的语句,也可能看不到...取决于您使用的工具。

这些属性被捕获到sys.sql_modules,其中包含源文本和状态uses_ansi_nullsuses_quoted_identifier以及其他粘性属性。您可以使用这些标志来了解如何在过程和/或函数之前编写任何语句。