Teilen über


Serverkonfiguration: cursor threshold

Gilt für:SQL Server

In diesem Artikel wird beschrieben, wie die Serverkonfigurationsoption cursor threshold in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL konfiguriert wird. Die Option cursor threshold gibt die Anzahl der Zeilen im Cursorset an, bei der Cursorkeysets asynchron generiert werden. Wenn Cursor ein Keyset für ein Resultset generieren, schätzt der Abfrageoptimierer die Anzahl der Zeilen, die für dieses Resultset zurückgegeben werden. Wenn der Abfrageoptimierer schätzt, dass die Anzahl der zurückgegebenen Zeilen über diesem Schwellenwert liegt, wird der Cursor asynchron generiert. Dadurch kann der Benutzer Zeilen aus dem Cursor abrufen, während der Cursor weiterhin aufgefüllt wird. Andernfalls wird der Cursor synchron generiert, und die Abfrage wartet, bis alle Zeilen zurückgegeben wurden.

Begrenzungen

SQL Server unterstützt nicht das asynchrone Generieren von keysetgesteuerten oder statischen Transact-SQL-Cursorn. Transact-SQL-Cursorvorgänge wie OPEN oder FETCH werden als Batch ausgeführt, sodass die asynchrone Generierung von Transact-SQL-Cursorn nicht erforderlich ist. SQL Server unterstützt weiterhin asynchrone keysetgesteuerte oder statische API (Application Programming Interface)-Servercursor für den Fall, dass eine geringe Latenzzeit von OPEN wegen Clientroundtrips bei jedem Cursorvorgang ein Problem darstellt.

Die Genauigkeit des Abfrageoptimierers beim Bestimmen der Anzahl der Zeilen in einem Keyset hängt davon ab, wie aktuell die Statistiken für die einzelnen Tabellen im Cursor sind.

Empfehlungen

Diese Option ist eine erweiterte Option und sollte nur von einem erfahrenen Datenbankexperten geändert werden.

Wenn cursor threshold auf -1 festgelegt ist, werden alle Keysets synchron generiert. Dies ist für kleine Cursorsets von Vorteil. Wenn cursor threshold auf 0 festgelegt ist, werden alle Cursorkeysets asynchron generiert. Bei anderen Werten vergleicht der Abfrageoptimierer die Anzahl der erwarteten Zeilen im Cursorset und erstellt das Keyset asynchron, wenn die in cursor threshold festgelegte Anzahl überschritten wird. Sie sollten die Option cursor threshold nicht zu niedrig festlegen, da es besser ist, kleine Resultsets synchron zu erstellen.

Berechtigungen

Die Ausführungsberechtigungen für sp_configure ohne Parameter oder nur mit dem ersten Parameter werden standardmäßig allen Benutzern erteilt. Um sp_configure mit beiden Parametern auszuführen und eine Konfigurationsoption zu ändern oder die RECONFIGURE-Anweisung auszuführen, benötigt ein Benutzer die ALTER SETTINGS-Berechtigung auf Serverebene. Die ALTER SETTINGS-Berechtigung ist implizit in den festen Serverrollen sysadmin und serveradmin enthalten.

Verwenden von SQL Server Management Studio

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server, und wählen Sie Eigenschaften aus.

  2. Wählen Sie den Knoten Erweitert aus.

  3. Geben Sie unter Verschiedenes für die Option cursor threshold den gewünschten Wert an.

Verwenden von Transact-SQL

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. In diesem Beispiel wird gezeigt, wie Sie sp_configure zum Festlegen der Option cursor threshold auf 0 verwenden, damit Cursor-Keysets asynchron generiert werden.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'cursor threshold', 0;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

Weitere Informationen finden Sie unter Serverkonfigurationsoptionen.

Nachverfolgung: Nach dem Konfigurieren der Option „cursor threshold“

Die Einstellung tritt ohne Neustarten des Servers sofort in Kraft.