SQLSetConnectAttr-Funktion

Konformität
Version eingeführt: ODBC 3.0-Normenkonformität: ISO 92

Zusammenfassung
SQLSetConnectAttr legt Attribute fest, die Aspekte von Verbindungen steuern.

Hinweis

Weitere Informationen dazu, was der Treiber-Manager diese Funktion ordnet, wenn eine ODBC 3*.x*-Anwendung mit einem ODBC 2*.x*-Treiber funktioniert, finden Sie unter Zuordnen von Ersatzfunktionen für die Abwärtskompatibilität von Anwendungen.

Syntax

  
SQLRETURN SQLSetConnectAttr(  
     SQLHDBC       ConnectionHandle,  
     SQLINTEGER    Attribute,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    StringLength);  

Argumente

ConnectionHandle
[Eingabe] Verbindungshandle.

Attribut
[Eingabe] Festzulegende Attribut, aufgeführt in "Kommentare".

ValuePtr
[Eingabe] Zeiger auf den Wert, der dem Attribut zugeordnet werden soll. Abhängig vom Wert von Attribut ist ValuePtr ein ganzzahliger Wert ohne Vorzeichen oder zeigt auf eine Zeichenfolge mit NULL-Beendigung. Beachten Sie, dass der integrale Typ des Attributarguments möglicherweise keine feste Länge aufweist. Ausführliche Informationen finden Sie im Abschnitt Kommentare.

StringLength
[Eingabe] Wenn Attribut ein odbc-definiertes Attribut ist und ValuePtr auf eine Zeichenfolge oder einen binären Puffer verweist, sollte dieses Argument die Länge von *ValuePtr haben. Für Zeichenfolgendaten sollte dieses Argument die Anzahl der Bytes in der Zeichenfolge enthalten.

Wenn Attribut ein ODBC-definiertes Attribut und ValuePtr eine ganze Zahl ist, wird StringLength ignoriert.

Wenn Attribut ein vom Treiber definiertes Attribut ist, gibt die Anwendung die Art des Attributs für den Treiber-Manager an, indem das StringLength-Argument festgelegt wird. StringLength kann die folgenden Werte aufweisen:

  • Wenn ValuePtr ein Zeiger auf eine Zeichenfolge ist, ist StringLength die Länge der Zeichenfolge oder SQL_NTS.

  • Wenn ValuePtr ein Zeiger auf einen binären Puffer ist, platziert die Anwendung das Ergebnis des makros SQL_LEN_BINARY_ATTR(length) in StringLength. Dadurch wird ein negativer Wert in StringLength platziert.

  • Wenn ValuePtr ein Zeiger auf einen anderen Wert als eine Zeichenfolge oder eine binäre Zeichenfolge ist, sollte StringLength den Wert SQL_IS_POINTER haben.

  • Wenn ValuePtr einen Wert mit fester Länge enthält, ist StringLength entweder SQL_IS_INTEGER oder SQL_IS_UINTEGER.

Gibt zurück

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE oder SQL_STILL_EXECUTING.

Diagnose

Wenn SQLSetConnectAttr SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert abgerufen werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_DBC und einem Handle of ConnectionHandle aufgerufen wird. In der folgenden Tabelle sind die SQLSTATE-Werte aufgeführt, die häufig von SQLSetConnectAttr zurückgegeben werden, und die einzelnen Werte werden im Kontext dieser Funktion erläutert. die Notation "(DM)" geht den Beschreibungen von SQLSTATEs voran, die vom Treiber-Manager zurückgegeben werden. Der rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.

Der Treiber kann SQL_SUCCESS_WITH_INFO zurückgeben, um Informationen zum Ergebnis des Festlegens einer Option bereitzustellen.

SQLSTATE Fehler BESCHREIBUNG
01000 Allgemeine Warnung Treiberspezifische Informationsmeldung. (Die Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01S02 Optionswert geändert Der Treiber unterstützte den in ValuePtr angegebenen Wert nicht und ersetzte einen ähnlichen Wert. (Die Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
08002 Verwendeter Verbindungsname Das Attributargument wurde SQL_ATTR_ODBC_CURSORS, und der Treiber war bereits mit der Datenquelle verbunden.
08003 Verbindung nicht geöffnet (DM) Es wurde ein Attributwert angegeben, der eine offene Verbindung erforderte, aber connectionHandle befand sich nicht in einem verbundenen Zustand.
08S01 Kommunikationslinkfehler Die Kommunikationsverbindung zwischen dem Treiber und der Datenquelle, mit der der Treiber verbunden war, ist fehlgeschlagen, bevor die Verarbeitung der Funktion abgeschlossen wurde.
24.000 Ungültiger Cursorstatus Das Attributargument wurde SQL_ATTR_CURRENT_CATALOG, und ein Resultset stand aus.
25000 Illegaler Vorgang während einer lokalen Transaktion Eine Verbindung war in einer lokalen Transaktion beim Versuch, sich in eine verteilte Transaktionsverbindung (DTC) einzuordnen, indem das Verbindungsattribute SQL_ATTR_ENLIST_IN_DTC festgelegt wurde.

Eine Verbindung ist bereits in einem DTC eingetragen.

Eine Verbindung wurde in einer verteilten Transaktionsverbindung eingetragen, und eine lokale Transaktion wurde gestartet, indem SQL_ATTR_AUTOCOMMIT auf SQL_AUTOCOMMIT_OFF festgelegt wurde.
3D000 Ungültiger Katalogname Das Attributargument wurde SQL_CURRENT_CATALOG, und der angegebene Katalogname war ungültig.
HY000 Allgemeiner Fehler Es ist ein Fehler aufgetreten, für den kein spezifischer SQLSTATE-Wert vorhanden war und für den kein implementierungsspezifischer SQLSTATE-Wert definiert wurde. Die von SQLGetDiagRec im *MessageText-Puffer zurückgegebene Fehlermeldung beschreibt den Fehler und seine Ursache.
HY001 Fehler bei der Speicherbelegung Der Treiber konnte keinen Arbeitsspeicher zuordnen, der für die Unterstützung der Ausführung oder Vervollständigung der Funktion erforderlich ist.
HY008 Vorgang abgebrochen Für ConnectionHandle wurde die asynchrone Verarbeitung aktiviert. Die SQLSetConnectAttr-Funktion wurde aufgerufen, und bevor sie die Ausführung abgeschlossen hat, wurde die SQLCancelHandle-Funktion auf dem ConnectionHandle aufgerufen, und dann wurde die SQLSetConnectAttr-Funktion erneut für connectionHandle aufgerufen.

Oder die SQLSetConnectAttr-Funktion wurde aufgerufen, und bevor die Ausführung abgeschlossen wurde, wurde SQLCancelHandle auf der ConnectionHandle von einem anderen Thread in einer Multithreadanwendung aufgerufen.
HY009 Ungültige Verwendung von NULL-Zeiger Das Attributargument identifizierte ein Verbindungsattribute, das einen Zeichenfolgenwert erforderte, und das ValuePtr-Argument war ein NULL-Zeiger.
HY010 Funktionssequenzfehler (DM) Eine asynchron ausgeführte Funktion wurde für ein StatementHandle aufgerufen, das dem ConnectionHandle zugeordnet ist und beim Aufruf von SQLSetConnectAttr weiterhin ausgeführt wurde.

(DM) Eine asynchron ausgeführte Funktion (nicht diese Funktion) wurde für ConnectionHandle aufgerufen und wurde weiterhin ausgeführt, als diese Funktion aufgerufen wurde.

(DM) SQLExecute, SQLExecDirect oder SQLMoreResults wurde für eines der anweisungshandle zugeordneten Handles aufgerufen und SQL_PARAM_DATA_AVAILABLE zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle gestreamten Parameter abgerufen wurden.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos wurde für ein StatementHandle aufgerufen, das connectionHandle zugeordnet ist, und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle Daten bei der Ausführung gesendet wurden.

(DM) SQLBrowseConnect wurde für ConnectionHandle aufgerufen und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor SQLBrowseConnect SQL_SUCCESS_WITH_INFO oder SQL_SUCCESS zurückgegeben hat.
HY011 Attribut kann jetzt nicht festgelegt werden Das Attributargument wurde SQL_ATTR_TXN_ISOLATION, und eine Transaktion war geöffnet.
HY013 Fehler bei der Speicherverwaltung Der Funktionsaufruf konnte nicht verarbeitet werden, da auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund von niedrigen Speicherbedingungen.
HY024 Ungültiger Attributwert Aufgrund des angegebenen Attributwerts wurde in ValuePtr ein ungültiger Wert angegeben. (Der Treiber-Manager gibt diesen SQLSTATE-Wert nur für Verbindungs- und Anweisungsattribute zurück, die einen diskreten Satz von Werten akzeptieren, z. B. SQL_ATTR_ACCESS_MODE oder SQL_ATTR_ASYNC_ENABLE. Für alle anderen Verbindungs- und Anweisungsattribute muss der Treiber den in ValuePtr angegebenen Wert überprüfen.)

Das Argument Attribute wurde SQL_ATTR_TRACEFILE oder SQL_ATTR_TRANSLATE_LIB, und ValuePtr war eine leere Zeichenfolge.
HY090 Ungültige Zeichenfolgen- oder Pufferlänge (DM) *ValuePtr ist eine Zeichenfolge, und das StringLength-Argument war kleiner als 0, wurde aber nicht SQL_NTS.
HY092 Ungültiger Attribut-/Optionsbezeichner (DM) Der für das Argument Attribut angegebene Wert war für die vom Treiber unterstützte ODBC-Version ungültig.

(DM) Der für das Argument Attribut angegebene Wert war ein schreibgeschütztes Attribut.
HY114 Der Treiber unterstützt keine asynchrone Funktionsausführung auf Verbindungsebene. (DM) Eine Anwendung hat versucht, die asynchrone Funktionsausführung mit SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE für einen Treiber zu aktivieren, der keine asynchronen Verbindungsvorgänge unterstützt.
HY117 Die Verbindung wird aufgrund eines unbekannten Transaktionsstatus angehalten. Nur trenn- und schreibgeschützte Funktionen sind zulässig. (DM) Weitere Informationen zum Angehaltenen Zustand finden Sie unter SQLEndTran-Funktion.
HY121 Cursorbibliothek und Driver-Aware Pooling können nicht gleichzeitig aktiviert werden Weitere Informationen finden Sie unter Treiberfähiges Verbindungspooling.
HYC00 Optionales Feature nicht implementiert Der für das Argument Attribut angegebene Wert war ein gültiges ODBC-Verbindungs- oder Anweisungsattribut für die vom Treiber unterstützte ODBC-Version, wurde aber vom Treiber nicht unterstützt.
HYT01 Verbindungstimeout abgelaufen Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr festgelegt, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Treiber unterstützt diese Funktion nicht. (DM) Der der ConnectionHandle zugeordnete Treiber unterstützt die Funktion nicht.
IM009 Übersetzungs-DLL kann nicht geladen werden Der Treiber konnte die für die Verbindung angegebene Übersetzungs-DLL nicht laden. Dieser Fehler kann nur zurückgegeben werden, wenn Attribut SQL_ATTR_TRANSLATE_LIB ist.
IM017 Abruf ist im asynchronen Benachrichtigungsmodus deaktiviert. Wenn das Benachrichtigungsmodell verwendet wird, wird die Abfrage deaktiviert.
IM018 SQLCompleteAsync wurde nicht aufgerufen, um den vorherigen asynchronen Vorgang für dieses Handle abzuschließen. Wenn der vorherige Funktionsaufruf für das Handle SQL_STILL_EXECUTING zurückgibt und der Benachrichtigungsmodus aktiviert ist, muss SQLCompleteAsync für das Handle aufgerufen werden, um die Nachverarbeitung durchzuführen und den Vorgang abzuschließen.
S1118 Der Treiber unterstützt keine asynchrone Benachrichtigung. SQL_ATTR_ASYNC_DBC_EVENT festgelegt wurde (nachdem die Verbindung hergestellt wurde), aber asynchrone Benachrichtigungen werden vom Treiber nicht unterstützt.

Wenn Attribut ein Anweisungsattribut ist, kann SQLSetConnectAttr alle von SQLSetStmtAttr zurückgegebenen SQLSTATEs zurückgeben.

Kommentare

Allgemeine Informationen zu Verbindungsattributen finden Sie unter Verbindungsattribute.

Die derzeit definierten Attribute und die Version von ODBC, in der sie eingeführt wurden, werden weiter unten in diesem Abschnitt in der Tabelle angezeigt. Es wird erwartet, dass mehr Attribute definiert werden, um verschiedene Datenquellen zu nutzen. Ein Bereich von Attributen wird von ODBC reserviert. Treiberentwickler müssen Werte für ihre eigene treiberspezifische Verwendung über Open Group reservieren.

Hinweis

Die Möglichkeit, Anweisungsattribute auf Verbindungsebene durch Aufrufen von SQLSetConnectAttr festzulegen, ist in ODBC 3*.x* veraltet. ODBC 3*.x*-Anwendungen sollten niemals Anweisungsattribute auf Verbindungsebene festlegen. ODBC 3*.x*-Anweisungsattribute können nicht auf Verbindungsebene festgelegt werden, mit Ausnahme der Attribute SQL_ATTR_METADATA_ID und SQL_ATTR_ASYNC_ENABLE, die sowohl Verbindungsattribute als auch Anweisungsattribute sind und entweder auf Verbindungs- oder Anweisungsebene festgelegt werden können.

ODBC 3*.x*-Treiber benötigen diese Funktionalität nur, wenn sie mit ODBC 2*.x*-Anwendungen funktionieren sollen, die ODBC 2*.x*-Anweisungsoptionen auf Verbindungsebene festlegen. Weitere Informationen finden Sie unter SQLSetConnectOption-Zuordnung in Anhang G: Treiberrichtlinien für Abwärtskompatibilität.

Eine Anwendung kann SQLSetConnectAttr jederzeit zwischen dem Zeitpunkt aufrufen, zu dem die Verbindung zugeordnet und freigegeben wird. Alle Verbindungs- und Anweisungsattribute, die von der Anwendung für die Verbindung erfolgreich festgelegt wurden, bleiben erhalten, bis SQLFreeHandle für die Verbindung aufgerufen wird. Wenn eine Anwendung beispielsweise SQLSetConnectAttr aufruft, bevor eine Verbindung mit einer Datenquelle hergestellt wird, bleibt das Attribut auch dann erhalten, wenn SQLSetConnectAttr im Treiber fehlschlägt, wenn die Anwendung eine Verbindung mit der Datenquelle herstellt. Wenn eine Anwendung ein treiberspezifisches Attribut festlegt, wird das Attribut auch dann beibehalten, wenn die Anwendung über die Verbindung eine Verbindung mit einem anderen Treiber herstellt.

Einige Verbindungsattribute können nur festgelegt werden, bevor eine Verbindung hergestellt wurde. andere können erst festgelegt werden, nachdem eine Verbindung hergestellt wurde. In der folgenden Tabelle sind die Verbindungsattribute angegeben, die entweder vor oder nach dem Herstellen einer Verbindung festgelegt werden müssen. Entweder gibt an, dass das Attribut entweder vor oder nach der Verbindung festgelegt werden kann.

attribute Vor oder nach der Verbindung festlegen?
SQL_ATTR_ACCESS_MODE Entweder[1]
SQL_ATTR_ASYNC_DBC_EVENT Sowohl als auch
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE Entweder[4]
SQL_ATTR_ASYNC_DBC_PCALLBACK Sowohl als auch
SQL_ATTR_ASYNC_DBC_PCONTEXT Sowohl als auch
SQL_ATTR_ASYNC_ENABLE Entweder[2]
SQL_ATTR_AUTO_IPD Sowohl als auch
SQL_ATTR_AUTOCOMMIT Entweder[5]
SQL_ATTR_CONNECTION_DEAD Danach
SQL_ATTR_CONNECTION_TIMEOUT Sowohl als auch
SQL_ATTR_CURRENT_CATALOG Entweder[1]
SQL_ATTR_DBC_INFO_TOKEN Danach
SQL_ATTR_ENLIST_IN_DTC Danach
SQL_ATTR_LOGIN_TIMEOUT Vor
SQL_ATTR_METADATA_ID Sowohl als auch
SQL_ATTR_ODBC_CURSORS Vor
SQL_ATTR_PACKET_SIZE Vor
SQL_ATTR_QUIET_MODE Sowohl als auch
SQL_ATTR_TRACE Sowohl als auch
SQL_ATTR_TRACEFILE Sowohl als auch
SQL_ATTR_TRANSLATE_LIB Danach
SQL_ATTR_TRANSLATE_OPTION Danach
SQL_ATTR_TXN_ISOLATION Entweder[3]

[1] je nach Treiber können SQL_ATTR_ACCESS_MODE und SQL_ATTR_CURRENT_CATALOG vor oder nach dem Verbinden festgelegt werden. Interoperable Anwendungen legen sie jedoch vor dem Herstellen einer Verbindung fest, da einige Treiber das Ändern nach der Verbindung nicht unterstützen.

[2] SQL_ATTR_ASYNC_ENABLE muss festgelegt werden, bevor eine aktive Anweisung vorhanden ist.

[3] SQL_ATTR_TXN_ISOLATION kann nur festgelegt werden, wenn keine offenen Transaktionen für die Verbindung vorhanden sind. Einige Verbindungsattribute unterstützen die Ersetzung eines ähnlichen Werts, wenn die Datenquelle den in *ValuePtr angegebenen Wert nicht unterstützt. In solchen Fällen gibt der Treiber SQL_SUCCESS_WITH_INFO und SQLSTATE 01S02 (Optionswert geändert) zurück. Wenn attribut beispielsweise SQL_ATTR_PACKET_SIZE ist und *ValuePtr die maximale Paketgröße überschreitet, ersetzt der Treiber die maximale Größe. Um den ersetzten Wert zu ermitteln, ruft eine Anwendung SQLGetConnectAttr auf.

[4] Wenn SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE festgelegt wird, bevor eine Verbindung geöffnet wird, legt der Treiber-Manager das Attribut des Treibers fest, wenn der Treiber während eines Aufrufs von SQLBrowseConnect, SQLConnect oder SQLDriverConnect geladen wird. Vor einem Aufruf von SQLBrowseConnect, SQLConnect oder SQLDriverConnect weiß der Treiber-Manager nicht, mit welchem Treiber eine Verbindung hergestellt werden soll, und weiß nicht, ob der Treiber asynchrone Verbindungsvorgänge unterstützt. Daher gibt der Treiber-Manager immer SQL_SUCCESS zurück. Falls der Treiber jedoch keine asynchronen Verbindungsvorgänge unterstützt, schlägt der Aufruf von SQLBrowseConnect, SQLConnect oder SQLDriverConnect fehl.

[5] Wenn SQL_ATTR_AUTOCOMMIT auf FALSE festgelegt ist, sollten Anwendungen SQLEndTran(SQL_ROLLBACK) aufrufen, wenn eine API SQL_ERROR zurückgibt, um die Transaktionskonsistenz sicherzustellen.

Das Format der im *ValuePtr-Puffer festgelegten Informationen hängt vom angegebenen Attribut ab. SQLSetConnectAttr akzeptiert Attributinformationen in einem von zwei verschiedenen Formaten: eine NULL-Zeichenfolge oder einen ganzzahligen Wert. Das Format der Einzelnen wird in der Beschreibung des Attributs notiert. Zeichenfolgen, auf die vom ValuePtr-Argument von SQLSetConnectAttr verwiesen wird, weisen eine Länge von StringLength-Bytes auf.

Das StringLength-Argument wird ignoriert, wenn die Länge durch das -Attribut definiert wird, wie dies bei allen Attributen, die in ODBC 2*.x* oder früher eingeführt wurden, der Fall ist.

Attribut ValuePtr-Inhalte
SQL_ATTR_ACCESS_MODE (ODBC 1.0) Ein SQLUINTEGER-Wert. SQL_MODE_READ_ONLY wird vom Treiber oder der Datenquelle als Indikator verwendet, dass die Verbindung nicht erforderlich ist, um SQL-Anweisungen zu unterstützen, die Updates verursachen. Dieser Modus kann verwendet werden, um Sperrstrategien, Transaktionsverwaltung oder andere Bereiche entsprechend dem Treiber oder der Datenquelle zu optimieren. Der Treiber ist nicht erforderlich, um zu verhindern, dass solche Anweisungen an die Datenquelle übermittelt werden. Das Verhalten des Treibers und der Datenquelle, wenn sie aufgefordert werden, SQL-Anweisungen zu verarbeiten, die während einer schreibgeschützten Verbindung nicht schreibgeschützt sind, ist implementierungsdefiniert. SQL_MODE_READ_WRITE ist der Standardwert.
SQL_ATTR_ASYNC_DBC_EVENT (ODBC 3.8) Ein SQLPOINTER-Wert, der ein Ereignishandle ist.

Die Benachrichtigung über die Vervollständigung asynchroner Funktionen wird aktiviert, indem SQLSetConnectAttr mit dem attribut SQL_ATTR_ASYNC_STMT_EVENT aufgerufen und das Ereignishandle angegeben wird. Hinweis: Die Benachrichtigungsmethode wird mit der Cursorbibliothek nicht unterstützt. Eine Anwendung erhält eine Fehlermeldung, wenn sie versucht, die Cursorbibliothek über SQLSetConnectAttr zu aktivieren, wenn die Benachrichtigungsmethode aktiviert ist.
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE (ODBC 3.8) Ein SQLUINTEGER-Wert, der die asynchrone Ausführung ausgewählter Funktionen im Verbindungshandle aktiviert oder deaktiviert. Weitere Informationen finden Sie unter Asynchrone Ausführung (Abfragemethode).

SQL_ASYNC_DBC_ENABLE_ON = Aktivieren des asynchronen Vorgangs für angegebene verbindungsbezogene Funktionen.

SQL_ASYNC_DBC_ENABLE_OFF = (Standard) Deaktivieren Sie den asynchronen Vorgang für angegebene verbindungsbezogene Funktionen.

Das Festlegen SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE ist immer synchron (das heißt, es wird nie SQL_STILL_EXECUTING zurückgegeben).

Die asynchrone Ausführung von Anweisungsvorgängen wird mit SQL_ATTR_ASYNC_ENABLE aktiviert.
SQL_ATTR_ASYNC_DBC_PCALLBACK (ODBC 3.8) Ein SQLPOINTER-Wert, der auf die Kontextstruktur verweist.

Nur der Treiber-Manager kann die SQLSetStmtAttr-Funktion eines Treibers mit diesem Attribut aufrufen.
SQL_ATTR_ASYNC_DBC_PCONTEXT (ODBC 3.8) Ein SQLPOINTER-Wert, der auf die Kontextstruktur verweist.

Nur der Treiber-Manager kann die SQLSetStmtAttr-Funktion eines Treibers mit diesem Attribut aufrufen.
SQL_ATTR_ASYNC_ENABLE (ODBC 3.0) Ein SQLULEN-Wert, der angibt, ob eine Funktion, die mit einer Anweisung für die angegebene Verbindung aufgerufen wird, asynchron ausgeführt wird:

SQL_ASYNC_ENABLE_OFF = Asynchrone Ausführungsunterstützung für Anweisungsvorgänge deaktivieren (Standard).

SQL_ASYNC_ENABLE_ON = Aktivieren der Unterstützung der asynchronen Ausführung auf Verbindungsebene für Anweisungsvorgänge.

Dieses Attribut kann festgelegt werden, ob SQLGetInfo mit dem SQL_ASYNC_MODE Informationstyp SQL_AM_CONNECTION oder SQL_AM_STATEMENT zurückgibt.
SQL_ATTR_AUTO_IPD (ODBC 3.0) Ein schreibgeschützter SQLUINTEGER-Wert, der angibt, ob die automatische Auffüllung der IPD nach einem Aufruf von SQLPrepare unterstützt wird:

SQL_TRUE = Automatische Auffüllung der IPD nach einem Aufruf von SQLPrepare wird vom Treiber unterstützt.

SQL_FALSE = Die automatische Auffüllung der IPD nach einem Aufruf von SQLPrepare wird vom Treiber nicht unterstützt. Server, die keine vorbereiteten Anweisungen unterstützen, können die IPD nicht automatisch auffüllen.

Wenn SQL_TRUE für das SQL_ATTR_AUTO_IPD-Verbindungsattribute zurückgegeben wird, kann das SQL_ATTR_ENABLE_AUTO_IPD -Anweisungsattribut so festgelegt werden, dass die automatische Auffüllung der IPD aktiviert oder deaktiviert wird. Wenn SQL_ATTR_AUTO_IPD SQL_FALSE ist, kann SQL_ATTR_ENABLE_AUTO_IPD nicht auf SQL_TRUE festgelegt werden. Der Standardwert von SQL_ATTR_ENABLE_AUTO_IPD entspricht dem Wert von SQL_ATTR_AUTO_IPD.

Dieses Verbindungsattribut kann von SQLGetConnectAttr zurückgegeben werden, kann aber nicht von SQLSetConnectAttr festgelegt werden.
SQL_ATTR_AUTOCOMMIT (ODBC 1.0) Ein SQLUINTEGER-Wert, der angibt, ob autocommit oder manueller Commitmodus verwendet werden soll:

SQL_AUTOCOMMIT_OFF = Der Treiber verwendet den manuellen Commitmodus, und die Anwendung muss Transaktionen mit SQLEndTran explizit committen oder rollbacken.

SQL_AUTOCOMMIT_ON = Der Treiber verwendet den Autocommit-Modus. Jede Anweisung wird unmittelbar nach der Ausführung committet. Dies ist die Standardoption. Alle offenen Transaktionen für die Verbindung werden verpflichtet, wenn SQL_ATTR_AUTOCOMMIT auf SQL_AUTOCOMMIT_ON festgelegt ist, um vom Modus für manuelle Commits in den Modus für automatisches Commit zu wechseln.

Weitere Informationen finden Sie unter Commitmodus. Wichtig: Einige Datenquellen löschen die Zugriffspläne und schließen die Cursor für alle Anweisungen für eine Verbindung bei jedem Commit einer Anweisung. Der Autocommit-Modus kann dazu führen, dass dies geschieht, nachdem jede Nichtabfrage-Anweisung ausgeführt wurde oder wenn der Cursor für eine Abfrage geschlossen wird. Weitere Informationen finden Sie unter SQL_CURSOR_COMMIT_BEHAVIOR und SQL_CURSOR_ROLLBACK_BEHAVIOR Informationstypen in SQLGetInfo und Auswirkung von Transaktionen auf Cursor und vorbereitete Anweisungen.

Wenn ein Batch im Autocommit-Modus ausgeführt wird, sind zwei Dinge möglich. Der gesamte Batch kann als automatischmitierbare Einheit behandelt werden, oder jede Anweisung in einem Batch wird als automatischmitierbare Einheit behandelt. Bestimmte Datenquellen können beide Verhaltensweisen unterstützen und eine Möglichkeit bieten, die eine oder die andere auszuwählen. Es ist treiberdefiniert, ob ein Batch als automatischmitierbare Einheit behandelt wird oder ob jede einzelne Anweisung innerhalb des Batches automatischmitierbar ist.
SQL_ATTR_CONNECTION_DEAD

(ODBC 3.5)
Ein schreibgeschützter SQLUINTEGER-Wert, der den Zustand der Verbindung angibt. Wenn SQL_CD_TRUE, ist die Verbindung verloren gegangen. Wenn SQL_CD_FALSE, ist die Verbindung weiterhin aktiv.
SQL_ATTR_CONNECTION_TIMEOUT (ODBC 3.0) Ein SQLUINTEGER-Wert, der der Anzahl von Sekunden entspricht, die gewartet werden müssen, bis eine Anforderung für die Verbindung abgeschlossen ist, bevor sie zur Anwendung zurückkehrt. Der Treiber sollte SQLSTATE HYT00 (Timeout abgelaufen) zurückgeben, sobald ein Timeout in einer Situation möglich ist, die nicht der Abfrageausführung oder Anmeldung zugeordnet ist.

Wenn ValuePtr gleich 0 (Standard) ist, gibt es kein Timeout.
SQL_ATTR_CURRENT_CATALOG (ODBC 2.0) Eine Zeichenfolge, die den Namen des Katalogs enthält, der von der Datenquelle verwendet werden soll. In SQL Server ist der Katalog beispielsweise eine Datenbank, sodass der Treiber eine USEdatabase-Anweisung an die Datenquelle sendet, wobei die Datenbank die in *ValuePtr angegebene Datenbank ist. Bei einem Einzelschichttreiber kann der Katalog ein Verzeichnis sein, sodass der Treiber sein aktuelles Verzeichnis in das in *ValuePtr angegebene Verzeichnis ändert.
SQL_ATTR_DBC_INFO_TOKEN (ODBC 3.8 Ein SQLPOINTER-Wert, der zum Zurücksetzen des Verbindungsinformationstokens im DBC-Handle verwendet wird, wenn der (*pRating)-Parameter von SQLRateConnection nicht gleich 100 ist.

SQL_ATTR_DBC_INFO_TOKEN ist nur festgelegt. Es ist nicht möglich, sqlGetConnectAttr oder SQLGetConnectOption zum Abrufen dieses Werts zu verwenden. SQLSetConnectAttr des Treiber-Managers akzeptiert keine SQL_ATTR_DBC_INFO_TOKEN, da eine Anwendung dieses Attribut nicht festlegen sollte.

Wenn ein Treiber nach dem Festlegen SQL_ATTR_DBC_INFO_TOKEN SQL_ERROR zurückgibt, wird die soeben aus dem Pool abgerufene Verbindung freigegeben. Der Treiber-Manager versucht dann, eine weitere Verbindung aus dem Pool abzurufen. Weitere Informationen finden Sie unter Developing Connection-Pool Awareness in an ODBC Driver( Developing Connection-Pool Awareness in an ODBC Driver ).
SQL_ATTR_ENLIST_IN_DTC (ODBC 3.0) Ein SQLPOINTER-Wert, der angibt, ob der ODBC-Treiber in verteilten Transaktionen verwendet werden soll, die von Microsoft Component Services koordiniert werden.

Übergeben Sie ein DTC OLE-Transaktionsobjekt, das die transaktion angibt, die in SQL Server exportiert werden soll, oder SQL_DTC_DONE, um die DTC-Zuordnung der Verbindung zu beenden.

Der Client ruft die OLE ITransactionDispenser::BeginTransaction-Methode von Microsoft Distributed Transaction Coordinator (MS DTC) auf, um eine MS DTC-Transaktion zu starten und ein MS DTC-Transaktionsobjekt zu erstellen, das die Transaktion darstellt. Die Anwendung ruft dann SQLSetConnectAttr mit der Option SQL_ATTR_ENLIST_IN_DTC auf, um das Transaktionsobjekt der ODBC-Verbindung zuzuordnen. Alle entsprechenden Datenbankaktivitäten werden unter dem Schutz der MS DTC-Transaktion durchgeführt. Die Anwendung ruft SQLSetConnectAttr mit SQL_DTC_DONE auf, um die DTC-Zuordnung der Verbindung zu beenden. Weitere Informationen finden Sie in der MS DTC-Dokumentation.
SQL_ATTR_LOGIN_TIMEOUT (ODBC 1.0) Ein SQLUINTEGER-Wert, der der Anzahl von Sekunden entspricht, die auf den Abschluss einer Anmeldeanforderung gewartet werden muss, bevor sie zur Anwendung zurückkehren. Der Standardwert ist treiberabhängig. Wenn ValuePtr 0 ist, wird das Timeout deaktiviert, und ein Verbindungsversuch wartet unbegrenzt.

Wenn das angegebene Timeout das maximale Anmeldetimeout in der Datenquelle überschreitet, ersetzt der Treiber diesen Wert und gibt SQLSTATE 01S02 (Optionswert geändert) zurück.
SQL_ATTR_METADATA_ID (ODBC 3.0) Ein SQLUINTEGER-Wert, der bestimmt, wie die Zeichenfolgenargumente von Katalogfunktionen behandelt werden.

Wenn SQL_TRUE, werden die Zeichenfolgenargumente von Katalogfunktionen als Bezeichner behandelt. Der Fall ist nicht signifikant. Bei nicht begrenzten Zeichenfolgen entfernt der Treiber alle nachfolgenden Leerzeichen, und die Zeichenfolge wird in Großbuchstaben gefaltet. Bei durch Trennzeichen getrennten Zeichenfolgen entfernt der Treiber alle führenden oder nachfolgenden Leerzeichen und nimmt buchstäblich alles, was sich zwischen den Trennzeichen befindet. Wenn eines dieser Argumente auf einen NULL-Zeiger festgelegt ist, gibt die Funktion SQL_ERROR und SQLSTATE HY009 zurück (ungültige Verwendung des NULL-Zeigers).

Wenn SQL_FALSE, werden die Zeichenfolgenargumente von Katalogfunktionen nicht als Bezeichner behandelt. Der Fall ist signifikant. Sie können je nach Argument entweder ein Zeichenfolgensuchmuster enthalten oder nicht.

Der Standardwert ist SQL_FALSE.

Das TableType-Argument von SQLTables, das eine Liste von Werten akzeptiert, ist von diesem Attribut nicht betroffen.

SQL_ATTR_METADATA_ID kann auch auf Anweisungsebene festgelegt werden. (Es ist das einzige Verbindungsattribute, das auch ein Anweisungsattribut ist.)

Weitere Informationen finden Sie unter Argumente in Katalogfunktionen.
SQL_ATTR_ODBC_CURSORS (ODBC 2.0) Ein SQLULEN-Wert, der angibt, wie der Treiber-Manager die ODBC-Cursorbibliothek verwendet:

SQL_CUR_USE_IF_NEEDED = Der Treiber-Manager verwendet die ODBC-Cursorbibliothek nur, wenn sie benötigt wird. Wenn der Treiber die Option SQL_FETCH_PRIOR in SQLFetchScroll unterstützt, verwendet der Treiber-Manager die Scrollfunktionen des Treibers. Andernfalls wird die ODBC-Cursorbibliothek verwendet.

SQL_CUR_USE_ODBC = Der Treiber-Manager verwendet die ODBC-Cursorbibliothek.

SQL_CUR_USE_DRIVER = Der Treiber-Manager verwendet die Scrollfunktionen des Treibers. Dies ist die Standardeinstellung.

Weitere Informationen zur ODBC-Cursorbibliothek finden Sie im Anhang F: ODBC Cursor Library. Warnung: Die Cursorbibliothek wird in einer zukünftigen Version von Windows entfernt. Vermeiden Sie die Verwendung dieses Features in neuen Entwicklungsvorgängen, und planen Sie das Ändern von Anwendungen, die dieses Feature derzeit verwenden. Microsoft empfiehlt die Verwendung der Cursorfunktion des Treibers.
SQL_ATTR_PACKET_SIZE (ODBC 2.0) Ein SQLUINTEGER-Wert, der die Netzwerkpaketgröße in Bytes angibt. Hinweis: Viele Datenquellen unterstützen diese Option entweder nicht oder können nur die Netzwerkpaketgröße zurückgeben, aber nicht festlegen.

Wenn die angegebene Größe die maximale Paketgröße überschreitet oder kleiner als die minimale Paketgröße ist, ersetzt der Treiber diesen Wert und gibt SQLSTATE 01S02 (Optionswert geändert) zurück.

Wenn die Anwendung die Paketgröße festlegt, nachdem bereits eine Verbindung hergestellt wurde, gibt der Treiber SQLSTATE HY011 zurück (Attribut kann jetzt nicht festgelegt werden).
SQL_ATTR_QUIET_MODE (ODBC 2.0) Ein Fensterhandle (HWND).

Wenn das Fensterhandle ein NULL-Zeiger ist, zeigt der Treiber keine Dialogfelder an.

Wenn das Fensterhandle kein NULL-Zeiger ist, sollte es das übergeordnete Fensterhandle der Anwendung sein. Dies ist die Standardoption. Der Treiber verwendet dieses Handle, um Dialogfelder anzuzeigen. Hinweis: Das SQL_ATTR_QUIET_MODE-Verbindungsattribute gilt nicht für Dialogfelder, die von SQLDriverConnect angezeigt werden.
SQL_ATTR_TRACE (ODBC 1.0) Ein SQLUINTEGER-Wert, der den Treiber-Manager angibt, ob die Ablaufverfolgung ausgeführt werden soll:

SQL_OPT_TRACE_OFF = Ablaufverfolgung deaktiviert (Standard)

SQL_OPT_TRACE_ON = Ablaufverfolgung auf

Wenn die Ablaufverfolgung aktiviert ist, schreibt der Treiber-Manager jeden ODBC-Funktionsaufruf in die Ablaufverfolgungsdatei. Hinweis: Wenn die Ablaufverfolgung aktiviert ist, kann der Treiber-Manager SQLSTATE IM013 (Ablaufverfolgungsdateifehler) von jeder Beliebigen Funktion zurückgeben.

Eine Anwendung gibt eine Ablaufverfolgungsdatei mit der Option SQL_ATTR_TRACEFILE an. Wenn die Datei bereits vorhanden ist, wird der Treiber-Manager an die Datei angefügt. Andernfalls wird die Datei erstellt. Wenn die Ablaufverfolgung aktiviert ist und keine Ablaufverfolgungsdatei angegeben wurde, schreibt der Treiber-Manager in die Datei SQL. LOG im Stammverzeichnis ein.

Eine Anwendung kann die Variable ODBCSharedTraceFlag so festlegen, dass die Ablaufverfolgung dynamisch aktiviert wird. Die Ablaufverfolgung wird dann für alle derzeit ausgeführten ODBC-Anwendungen aktiviert. Wenn eine Anwendung die Ablaufverfolgung deaktiviert, wird sie nur für diese Anwendung deaktiviert.

Wenn das Trace-Schlüsselwort in den Systeminformationen auf 1 festgelegt ist, wenn eine Anwendung SQLAllocHandle mit einem HandleType von SQL_HANDLE_ENV aufruft, wird die Ablaufverfolgung für alle Handles aktiviert. Sie ist nur für die Anwendung aktiviert, die SQLAllocHandle aufgerufen hat.

Das Aufrufen von SQLSetConnectAttr mit dem Attribut SQL_ATTR_TRACE erfordert nicht, dass das Argument ConnectionHandle gültig ist, und gibt SQL_ERROR nicht zurück, wenn ConnectionHandle NULL ist. Dieses Attribut gilt für alle Verbindungen.
SQL_ATTR_TRACEFILE (ODBC 1.0) Eine NULL-endende Zeichenfolge, die den Namen der Ablaufverfolgungsdatei enthält.

Der Standardwert des attributs SQL_ATTR_TRACEFILE wird mit dem TraceFile-Schlüsselwort in den Systeminformationen angegeben. Weitere Informationen finden Sie unter ODBC-Unterschlüssel.

Wenn SQLSetConnectAttr mit dem Attribut SQL_ATTR_TRACEFILE aufgerufen wird, muss das Argument ConnectionHandle nicht gültig sein und gibt SQL_ERROR nicht zurück, wenn ConnectionHandle ungültig ist. Dieses Attribut gilt für alle Verbindungen.
SQL_ATTR_TRANSLATE_LIB (ODBC 1.0) Eine NULL-endende Zeichenfolge, die den Namen einer Bibliothek enthält, die die Funktionen SQLDriverToDataSource und SQLDataSourceToDriver enthält, auf die der Treiber zugreift, um Aufgaben wie die Zeichensatzübersetzung auszuführen. Diese Option kann nur angegeben werden, wenn der Treiber eine Verbindung mit der Datenquelle hergestellt hat. Die Einstellung dieses Attributs wird über Verbindungen hinweg beibehalten. Weitere Informationen zum Übersetzen von Daten finden Sie unter Übersetzungs-DLLs und Übersetzungs-DLL-Funktionsreferenz.
SQL_ATTR_TRANSLATE_OPTION (ODBC 1.0) Ein 32-Bit-Flagwert, der an die Übersetzungs-DLL übergeben wird. Dieses Attribut kann nur angegeben werden, wenn der Treiber eine Verbindung mit der Datenquelle hergestellt hat. Informationen zum Übersetzen von Daten finden Sie unter Übersetzungs-DLLs.
SQL_ATTR_TXN_ISOLATION (ODBC 1.0) Eine 32-Bit-Bitmaske, die die Transaktionsisolationsstufe für die aktuelle Verbindung festlegt. Eine Anwendung muss SQLEndTran aufrufen, um alle geöffneten Transaktionen für eine Verbindung zu committen oder ein Rollback auszuführen, bevor SQLSetConnectAttr mit dieser Option aufgerufen wird.

Die gültigen Werte für ValuePtr können durch Aufrufen von SQLGetInfo mit InfoType gleich SQL_TXN_ISOLATION_OPTIONS ermittelt werden.

Eine Beschreibung der Transaktionsisolationsstufen finden Sie in der Beschreibung des SQL_DEFAULT_TXN_ISOLATION Informationstyps in SQLGetInfo und Transaktionsisolationsstufen.

[1] Diese Funktionen können nur asynchron aufgerufen werden, wenn der Deskriptor ein Implementierungsdeskriptor und kein Anwendungsdeskriptor ist.

Codebeispiel

Weitere Informationen finden Sie unter SQLConnect.

Informationen über Finden Sie unter
Zuweisen eines Handles SQLAllocHandle-Funktion
Zurückgeben der Einstellung eines Verbindungsattributes SQLGetConnectAttr-Funktion

Weitere Informationen

ODBC-API-Referenz
ODBC-Headerdateien