設定 cursor threshold (伺服器組態選項)

適用於:SQL Server

本主題描述如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中設定資料指標閾值伺服器組態選項。 cursor threshold 選項會指定資料指標集中以非同步方式產生資料指標索引鍵集的列數。 當資料指標為結果集產生索引鍵集時,查詢最佳化工具會估計將在該結果集傳回的資料列數。 如果查詢最佳化工具估計將傳回的列數會大於這個臨界值,就會以非同步方式產生資料指標,讓使用者在資料指標繼續擴展的同時,可以從資料指標擷取資料列。 否則,會以同步的方式產生資料指標,使查詢等到所有資料列都傳回為止。

本主題內容

開始之前

限制事項

  • SQL Server 不支援非同步產生索引鍵集驅動的 Transact-SQL 資料指標或靜態的 Transact-SQL 資料指標。 OPEN 或 FETCH 之類的 Transact-SQL 資料指標作業是以批次方式來處理,因此,不需要非同步產生 Transact-SQL 資料指標。 由於用戶端會針對每個資料指標作業而往返運作,SQL Server 仍繼續支援非同步索引鍵集驅動的應用程式開發介面 (API) 伺服器資料指標或靜態的 API 伺服器資料指標,對這些伺服器資料指標而言,低度延遲的 OPEN 是一項需要關切的問題。

  • 查詢最佳化工具用來決定索引鍵集中估計資料列數的精確度,須視資料指標中每個資料表統計資料的準確度而定。

建議

  • 此選項是進階選項,只有具經驗的資料庫管理員或通過認證的 SQL Server 專業人員才可變更。

  • 如果將 [資料指標臨界值] 設定為 -1,所有索引鍵集都會以同步方式產生,這有益於小型的資料指標集。 如果將 cursor threshold 設成 0,所有資料指標索引鍵集都會以非同步方式產生。 若使用其他值,查詢最佳化工具會比較資料指標集中預期的列數,如果列數超過 cursor threshold中設定的數字,就以非同步方式建立索引鍵集。 請不要將 cursor threshold 設得太低,因為小的結果集最好是以同步的方式建立。

安全性

權限

不含參數或只含第一個參數之 sp_configure 上的執行權限預設會授與所有使用者。 以同時設定兩個參數的 sp_configure 來變更組態選項或執行 RECONFIGURE 陳述式時,使用者必須取得 ALTER SETTINGS 伺服器層級權限。 系統管理員 (sysadmin)serveradmin 固定伺服器角色會隱含 ALTER SETTINGS 權限。

使用 SQL Server Management Studio

若要設定資料指標臨界值選項

  1. 在物件總管中,請以滑鼠右鍵按一下伺服器,然後選取 [屬性]。

  2. 按一下 [進階] 節點。

  3. [其他] 下,將 [資料指標臨界值] 選項變更為所要的值。

使用 TRANSACT-SQL

若要設定資料指標臨界值選項

  1. 連線至資料庫引擎。

  2. 在標準列中,按一下 [新增查詢]

  3. 複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。 這個範例示範如何使用 sp_configurecursor threshold 選項設定為 0 ,以便以非同步方式產生資料指標索引鍵集。

USE AdventureWorks2022;  
GO  
EXEC sp_configure 'show advanced options', 1 ;  
GO  
RECONFIGURE  
GO  
EXEC sp_configure 'cursor threshold', 0 ;  
GO  
RECONFIGURE  
GO  
  

如需詳細資訊,請參閱伺服器組態選項 (SQL Server)

待處理:設定 cursor threshold 選項之後

設定會立即生效,不需要重新啟動伺服器。

另請參閱

@@CURSOR_ROWS (Transact-SQL)
RECONFIGURE (Transact-SQL)
伺服器組態選項 (SQL Server)
sp_configure (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)