【问题标题】:How do I stop default SET statements?如何停止默认的 SET 语句?
【发布时间】:2013-02-21 05:44:48
【问题描述】:

当我使用 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 Server 是否发出单独的请求只是为了设置这些 SET 语句?

两个问题:

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

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

【问题讨论】:

    标签: .net sql sql-server tsql ado.net


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多