sql server中的 SET NOCOUNT ON 的含义
生活随笔
收集整理的這篇文章主要介紹了
sql server中的 SET NOCOUNT ON 的含义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
每次我們在使用查詢分析器調試SQL語句的時候,通常會看到一些信息,提醒我們當前有多少個行受到了影響,這是些什么信息?在我們調用的時候這些信息有用嗎?是否可以關閉呢??
答案是這些信息在我們的客戶端的應用程序中是沒有用的,這些信息是存儲過程中的每個語句的DONE_IN_PROC? 信息。?
我們可以利用SET? NOCOUNT? 來控制這些信息,以達到提高程序性能的目的。?
MSDN中幫助如下:?
?
SET? NOCOUNT?
使返回的結果中不包含有關受? Transact-SQL? 語句影響的行數的信息。?
語法?
SET? NOCOUNT? {? ON? |? OFF? }?
注釋?
當? SET? NOCOUNT? 為? ON? 時,不返回計數(表示受? Transact-SQL? 語句影響的行數)。當? SET? NOCOUNT? 為? OFF? 時,返回計數。?
即使當? SET? NOCOUNT? 為? ON? 時,也更新? @@ROWCOUNT? 函數。?
當? SET? NOCOUNT? 為? ON? 時,將不給客戶端發送存儲過程中的每個語句的? DONE_IN_PROC? 信息。當使用? Microsoft? SQL? Server? 提供的實用工具執行查詢時,在? Transact-SQL? 語句(如? SELECT、INSERT、? UPDATE? 和? DELETE)結束時將不會在查詢結果中顯示"nn rows? affected"。?
如果存儲過程中包含的一些語句并不返回許多實際的數據,則該設置由于大量減少了網絡流量,因此可顯著提高性能。?
SET? NOCOUNT? 設置是在執行或運行時設置,而不是在分析時設置。?
權限?
SET? NOCOUNT? 權限默認授予所有用戶。?
結論:我們應該在存儲過程的頭部加上SET? NOCOUNT? ON? 這樣的話,在退出存儲過程的時候加上? SET? NOCOUNT? OFF這樣的話,以達到優化存儲過程的目的。?
還有一種說法:
前臺一般是一個返回就當一個結果集,? 不管這個返回是結果集,? 還是操作的反饋信息.?
?
為了保證前臺得到的只是真實的記錄集,? 而不是反饋信息,? 因此得使用? set? nocount? on
多說兩句:?
1:在查看SqlServer的幫助的時候,要注意“權限”這一節,因為某些語句是需要一定的權限的,而我們往往忽略。?
2:@@ROWCOUNT是返回受上一語句影響的行數,包括找到記錄的數目、刪除的行數、更新的記錄數等,不要認為只是返回查找的記錄數目,而且@@ROWCOUNT要緊跟需要判斷語句,否則@@ROWCOUNT將返回0。
答案是這些信息在我們的客戶端的應用程序中是沒有用的,這些信息是存儲過程中的每個語句的DONE_IN_PROC? 信息。?
我們可以利用SET? NOCOUNT? 來控制這些信息,以達到提高程序性能的目的。?
MSDN中幫助如下:?
?
SET? NOCOUNT?
使返回的結果中不包含有關受? Transact-SQL? 語句影響的行數的信息。?
語法?
SET? NOCOUNT? {? ON? |? OFF? }?
注釋?
當? SET? NOCOUNT? 為? ON? 時,不返回計數(表示受? Transact-SQL? 語句影響的行數)。當? SET? NOCOUNT? 為? OFF? 時,返回計數。?
即使當? SET? NOCOUNT? 為? ON? 時,也更新? @@ROWCOUNT? 函數。?
當? SET? NOCOUNT? 為? ON? 時,將不給客戶端發送存儲過程中的每個語句的? DONE_IN_PROC? 信息。當使用? Microsoft? SQL? Server? 提供的實用工具執行查詢時,在? Transact-SQL? 語句(如? SELECT、INSERT、? UPDATE? 和? DELETE)結束時將不會在查詢結果中顯示"nn rows? affected"。?
如果存儲過程中包含的一些語句并不返回許多實際的數據,則該設置由于大量減少了網絡流量,因此可顯著提高性能。?
SET? NOCOUNT? 設置是在執行或運行時設置,而不是在分析時設置。?
權限?
SET? NOCOUNT? 權限默認授予所有用戶。?
結論:我們應該在存儲過程的頭部加上SET? NOCOUNT? ON? 這樣的話,在退出存儲過程的時候加上? SET? NOCOUNT? OFF這樣的話,以達到優化存儲過程的目的。?
還有一種說法:
前臺一般是一個返回就當一個結果集,? 不管這個返回是結果集,? 還是操作的反饋信息.?
?
為了保證前臺得到的只是真實的記錄集,? 而不是反饋信息,? 因此得使用? set? nocount? on
多說兩句:?
1:在查看SqlServer的幫助的時候,要注意“權限”這一節,因為某些語句是需要一定的權限的,而我們往往忽略。?
2:@@ROWCOUNT是返回受上一語句影響的行數,包括找到記錄的數目、刪除的行數、更新的記錄數等,不要認為只是返回查找的記錄數目,而且@@ROWCOUNT要緊跟需要判斷語句,否則@@ROWCOUNT將返回0。
總結
以上是生活随笔為你收集整理的sql server中的 SET NOCOUNT ON 的含义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 局域网arpsniffer源码剖析
- 下一篇: C禁用控制台