当我运行SQL事件探查器并使用ADO.Net发出查询时,我在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语句而单独发出请求?
两个问题:
关闭所有这些SET语句会更好吗?如果是,那我该怎么办呢?
这些SET的最佳设置是什么?我知道arithabort应该开启,因为它可以在大多数场景中提升性能。
答案 0 :(得分:1)
这些是由您的客户端驱动程序设置的,因此将始终在您创建的新连接上设置。
关闭所有这些并不是更好。即使这些是在打开连接时设置的,但这并不意味着您不能通过在连接上执行set SQL语句来覆盖它们,如上所述。
我会设置ARITHABORT,因为此set选项是用于计算列和索引视图的索引的选项之一。如果您不是美国人,您可以更改dateformat / language,但这并不重要,可以在登录级别完成。如果你不想使用READ_COMMITTED隔离,你可以改变它,虽然在大多数情况下这很好,因此它是默认的。其余的看起来很好。