Share via


Zuordnen eines Anweisungshandles

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Bevor eine Anwendung eine Anweisung ausführen kann, muss sie ein Anweisungshandle zuordnen. Dazu wird SQLAllocHandle aufgerufen, wobei der HandleType-Parameter auf SQL_HANDLE_STMT und InputHandle festgelegt ist, der auf ein Verbindungshandle verweist.

Anweisungsattribute sind Eigenschaften des Anweisungshandles. Beispielanweisungsattribute können die Verwendung von Lesezeichen und den mit dem Resultset der Anweisung zu verwendenden Cursor beinhalten. Anweisungsattribute werden mit SQLSetStmtAttr festgelegt, und ihre aktuellen Einstellungen werden mithilfe von SQLGetStmtAttr abgerufen. Es ist nicht erforderlich, dass eine Anwendung Anweisungsattribute festlegt; alle Anweisungsattribute haben Standardwerte und einige sind treiberspezifisch.

Gehen Sie bei der Verwendung mehrere ODBC-Anweisungs- und -Verbindungsoptionen vorsichtig vor. Das Aufrufen von SQLSetConnectAttr , bei dem fOption auf SQL_ATTR_LOGIN_TIMEOUT festgelegt ist, steuert die Zeit, zu der eine Anwendung auf einen Verbindungsversuch wartet, während beim Warten auf die Verbindungsherstellung ein Timeout auftritt (0 gibt eine unendliche Wartezeit an). Für Sites mit langen Reaktionszeiten kann hierfür ein hoher Wert festgelegt werden, um sicherzustellen, dass zum Herstellen von Verbindungen ausreichend Zeit eingeräumt wird. Jedoch sollte das Intervall stets so niedrig sein, dass der Benutzer nach einer angemessenen Zeitspanne benachrichtig wird, wenn der Treiber keine Verbindung herstellen kann.

Das Aufrufen von SQLSetStmtAttr mit fOption auf SQL_ATTR_QUERY_TIMEOUT legt ein Abfragetimeoutintervall fest, um den Server und den Benutzer vor Abfragen mit langer Ausführungsdauer zu schützen.

Das Aufrufen von SQLSetStmtAttr mit fOption auf SQL_ATTR_MAX_LENGTH begrenzt die Menge an Text - und Bilddaten , die eine einzelne Anweisung abrufen kann. Das Aufrufen von SQLSetStmtAttr mit fOption auf SQL_ATTR_MAX_ROWS beschränkt auch ein Rowset auf die ersten n Zeilen, wenn dies alles ist, was die Anwendung benötigt. Beachten Sie, dass das Festlegen von SQL_ATTR_MAX_ROWS bewirkt, dass der Treiber eine SET ROWCOUNT-Anweisung an den Server ausgibt. Dies wirkt sich auf alle Microsoft SQL Server-Anweisungen aus, einschließlich Triggern und Updates.

Gehen Sie beim Festlegen dieser Optionen vorsichtig vor. Im Idealfall sollten alle Anweisungshandle eines Verbindungshandles die gleichen Einstellungen für SQL_ATTR_MAX_LENGTH und SQL_ATTR_MAX_ROWS aufweisen. Wenn der Treiber von einem Anweisungshandle zu einem anderen mit abweichenden Werten für diese Optionen wechselt, muss der Treiber die entsprechenden SET TEXTSIZE- und SET ROWCOUNT-Anweisungen generieren, um die Einstellungen zu ändern. Der Treiber kann diese Anweisungen nicht dem gleichen Batch zuordnen, in dem sich auch die SQL-Anweisung des Benutzers befindet, da die SQL-Anweisung des Benutzers eine Anweisung enthalten kann, die die erste Anweisung in einem Batch darstellen muss. Der Treiber muss die Anweisungen SET TEXTSIZE und SET ROWCOUNT in einem separaten Batch senden, der automatisch einen zusätzlichen Roundtrip zum Server generiert.

Weitere Informationen

Ausführen von Abfragen (ODBC)