2013-02-21 68 views
0

當我運行SQL事件探查器,並使用ADO.Net發出查詢,我看到在SQL事件探查這些語句:如何停止默認SET語句?

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應該開啓,因爲它在大多數情況下都能提升性能。

回答

1

這些由您的客戶端驅動程序設置,因此將始終在您創建的新連接上進行設置。

  1. 將所有這些都關閉不是更好。即使這些設置是在連接打開時設置的,但這並不意味着您不能通過在連接上執行一組SQL語句來覆蓋它們,就像上面的那樣。

  2. 我將設置ARITHABORT,因爲此設置選項是用於計算列和索引視圖上的索引之一。如果您不是美國人,您可以更改日期格式/語言,但這並不重要,可以在登錄級別完成。如果你不想使用READ_COMMITTED隔離,你可以改變這個,儘管在大多數情況下這很好,因此它是默認的。其餘的看起來很好。