当我右键单击/修改时,如何阻止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/