0

当我使用 ADO.Net 运行 SQL 探查器并发出查询时,我在 SQL 探查器中看到这些语句:

set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed

我从来没有在任何查询中写过这些语句。如何停止这些 Set 语句?SQL 服务器是否发出单独的请求只是为了设置这些 SET 语句?

两个问题:

  1. 关闭所有这些 SET 语句会更好吗?如果是,那我该怎么做?

  2. 这些 SET 的最佳设置是什么?我知道 arithabort 应该打开,因为它在大多数情况下都能提高性能。

4

1 回答 1

1

这些是由您的客户端驱动程序设置的,因此将始终在您创建的新连接上设置。

  1. 最好把所有这些都关掉。尽管这些是在您的连接打开时设置的,但这并不意味着您不能通过在连接上执行 set SQL 语句来覆盖它们,就像上面的那些。

  2. 我会将 ARITHABORT 设置为 on,因为此设置选项是用于计算列和索引视图的索引的选项之一。如果您不是美国人,您可以更改日期格式/语言,但这并不重要,可以在登录级别完成。如果您不想使用 READ_COMMITTED 隔离,则可以更改此设置,尽管在大多数情况下这很好,因此它是默认设置。其余的看起来不错。

于 2013-02-21T08:12:33.843 回答