Zuordnen eines Anweisungshandles
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Bevor eine Anwendung eine Anweisung ausführen kann, muss sie ein Anweisungshandle zuordnen. Dies geschieht durch Aufrufen von SQLAllocHandle mit dem HandleType-Parameter, der auf SQL_HANDLE_STMT und InputHandle 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 mit "fOption " auf SQL_ATTR_LOGIN_TIMEOUT steuert die Zeit, zu der eine Anwendung auf einen Verbindungsversuch wartet, während eine Verbindung hergestellt wird (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 lang ausgeführten Abfragen zu schützen.
Das Aufrufen von SQLSetStmtAttr mit "fOption" auf SQL_ATTR_MAX_LENGTH beschränkt die Text- und Bilddatenmenge, 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 für die Anwendung erforderlich ist. 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.