使用索引创建/操作时的默认 SET 语句?

Posted

技术标签:

【中文标题】使用索引创建/操作时的默认 SET 语句?【英文标题】:Default SET statements when creating/manipulating with indexes? 【发布时间】:2011-05-02 15:38:25 【问题描述】:

MSDN's documentation on SET statements 包含以下段落:

在计算列或索引视图上创建和操作索引时,SET 选项 ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDING 和 ANSI_WARNINGS 必须设置为 ON。 NUMERIC_ROUNDABORT 选项必须设置为 OFF。

可以这样设置这些选项:

SET ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS ON
SET NUMERIC_ROUNDABORT OFF

我的问题是——有没有办法默认设置这些值,这样我们就不必每次打开连接时都手动设置它们?是系统范围的,还是针对特定用户/登录的?这样做会有什么缺点吗?

【问题讨论】:

【参考方案1】:

它们已经由 SSMS 设置。并由客户通常。我不必在很长时间时间内明确设置这些。

但是,如果需要,您可以使用sp_configure 指定“user options”。

顺便说一句:我没有也不会设置这个。我建议你不要触摸和更改任何设置,除非你证明你需要这样做......

最终用户也不需要这些选项。它们仅用于 ALTER INDEX 和 CREATE INDEX(在此上下文中)语句,它们不是日常最终用户命令。

【讨论】:

【参考方案2】:

试试sp_configure

我想这种方法的一个缺点是,如果有人稍后更改它并且您的脚本依赖于某个集合,那么您的脚本将会中断。

【讨论】:

【参考方案3】:

检查这可能会有所帮助: http://www.sqlservercentral.com/Forums/Topic1088175-391-1.aspx#bm1088396

【讨论】:

以上是关于使用索引创建/操作时的默认 SET 语句?的主要内容,如果未能解决你的问题,请参考以下文章

创建表时的一些后缀语句

创建表时的一些后缀语句

创建表时的一些后缀语句

07. 集合

SQL Select 语句 - 字段不存在时的默认字段值

爆肝,52条SQL语句,性能优化,干货必收藏 !