sql-server – 阻止SQL Server Management Studio添加ANSI_NULLS和QUOTED_IDENTIFIER

前端之家收集整理的这篇文章主要介绍了sql-server – 阻止SQL Server Management Studio添加ANSI_NULLS和QUOTED_IDENTIFIER前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我右键单击/修改时,如何阻止sql Management Studio(10.50.2500.0)将其添加到每个存储过程的开头?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

这些设置都不适合我. ANSI_NULLS ON和QUOTED_IDENTIFIER ON在我的所有服务器,数据库和连接上设置.除此之外,我从不使用双引号(我使用括号作为保留字)和所有可空字段我在需要时正确使用IS NULL.

我每次编辑程序时都会删除这些设置.我的所有程序都已正确设置,并且在我的环境中永远不会改变.经核实:

SELECT uses_ansi_nulls,uses_quoted_identifier
FROM sys.sql_modules
WHERE object_id = object_id( 'proc_name' )

解决方法

不确定这是一个答案还是一个无用的答案,但正如Damien_The_Unbeliever建议你绝对不希望SSMS停止编写这些行的脚本.因为它们位于sql_modules表中,所以它们与sql代码本身一起构成了存储过程定义的组成部分.因此,它们不能像sql代码那样被“关闭”.

如果从具有与创建/定义存储过程时使用的ANSI_NULLS选项值不同的连接创建/更改存储过程,则永久更改该存储过程的行为!

正是由于这个原因,SSMS(以及任何一半体面的sql对象脚本工具)将始终输出这些行 – 因为如果删除它们或更改它们,您将更改存储过程的定义(删除它们,特别是,不好)因为它意味着存储过程的行为,取决于它发布的连接,可能会有所不同).

快速谷歌搜索“ANSI_NULLS QUOTED_IDENTIFIER存储过程”,最高结果是以下文章似乎解释了选项及其影响,非常清楚:http://ranjithk.com/2010/01/10/understanding-set-quoted_identifier-onoff/

猜你在找的MsSQL相关文章