Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der SQL Server Native Client ODBC-Treiber unterstützt das gemischte Cursormodell (Keyset/Dynamic) nicht. Versuche, die Keysetgröße mithilfe von SQL_ATTR_KEYSET_SIZE festzulegen, schlägt fehl, wenn der Wertsatz nicht gleich 0 ist.
Die Anwendung legt SQL_ATTR_ROW_ARRAY_SIZE für alle Anweisungen fest, um die Anzahl der Zeilen zu deklarieren, die für einen SQLFetch - oder SQLFetchScroll-Funktionsaufruf zurückgegeben werden. Bei Anweisungen, die einen Servercursor angeben, verwendet der Treiber SQL_ATTR_ROW_ARRAY_SIZE, um die Größe des Zeilenblocks zu bestimmen, den der Server generiert, um eine Abrufanforderung vom Cursor zu erfüllen. Innerhalb der Blockgröße eines dynamischen Cursors werden Die Zeilenmitgliedschaft und -sortierung festgelegt, wenn die Transaktionsisolationsstufe ausreicht, um wiederholbare Lesevorgänge von zugesicherten Transaktionen sicherzustellen. Der Cursor ist vollständig dynamisch außerhalb des durch diesen Wert angegebenen Blocks. Die Größe des Servercursorblocks ist vollständig dynamisch und kann an jedem Punkt der Abrufverarbeitung geändert werden.
SQLSetStmtAttr und Table-Valued Parameter
SQLSetStmtAttr kann verwendet werden, um SQL_SOPT_SS_PARAM_FOCUS im Anwendungsparameterdeskriptor (APD) festzulegen, bevor auf Deskriptorfelder für Spalten mit Tabellenwertparametern zugegriffen wird.
Wenn versucht wird, SQL_SOPT_SS_PARAM_FOCUS auf das Ordinal eines Parameters festzulegen, bei dem es sich nicht um einen Tabellenwertparameter handelt, gibt SQLSetStmtAttr SQL_ERROR zurück, und ein Diagnosedatensatz wird mit SQLSTATE = HY024 und der Meldung "Ungültiger Attributwert" erstellt. SQL_SOPT_SS_PARAM_FOCUS wird nicht geändert, wenn SQL_ERROR zurückgegeben wird.
Durch festlegen SQL_SOPT_SS_PARAM_FOCUS auf 0 wird der Zugriff auf Deskriptordatensätze für Parameter wiederhergestellt.
SQLSetStmtAttr kann auch zum Festlegen von SQL_SOPT_SS_NAME_SCOPE verwendet werden. Weitere Informationen finden Sie im Abschnitt SQL_SOPT_SS_NAME_SCOPE weiter unten in diesem Thema.
Weitere Informationen finden Sie unter Table-Valued Parametermetadaten für vorbereitete Anweisungen.
Weitere Informationen zu Tabellenwertparametern finden Sie unter "Table-Valued Parameters (ODBC)".
SQLSetStmtAttr-Unterstützung für sparse Spalten
SQLSetStmtAttr kann verwendet werden, um SQL_SOPT_SS_NAME_SCOPE festzulegen. Weitere Informationen finden Sie im Abschnitt SQL_SOPT_SS_NAME_SCOPE weiter unten in diesem Thema. Weitere Informationen zu Sparsespalten finden Sie unter Unterstützung von "Sparse Columns" (ODBC).For more information about sparse columns support (ODBC).
Aussageattribute
Der ODBC-Treiber für SQL Server Native Client unterstützt auch die folgenden treiberspezifischen Anweisungsattribute.
SQL_SOPT_SS_CURSOR_OPTIONS
Das attribut SQL_SOPT_SS_CURSOR gibt an, ob der Treiber treiberspezifische Leistungsoptionen für Cursor verwendet. SQLGetData ist nicht zulässig, wenn diese Optionen festgelegt werden. Die Standardeinstellung ist SQL_CO_OFF. Der ValuePtr-Wert ist vom Typ SQLLEN.
| ValuePtr-Wert | BESCHREIBUNG |
|---|---|
| SQL_CO_OFF | Vorgabe. Deaktiviert schnelle vorwärtsgerichtete, schreibgeschützte Cursor und autoFetch, ermöglicht SQLGetData für vorwärtsgeschützte, schreibgeschützte Cursor. Wenn SQL_SOPT_SS_CURSOR_OPTIONS auf SQL_CO_OFF festgelegt ist, ändert sich der Cursortyp nicht. Das heißt, schneller Vorwärtscursor bleibt ein schneller Vorwärtscursor. Um den Cursortyp zu ändern, muss die Anwendung nun einen anderen Cursortyp mit SQLSetStmtAttr/SQL_ATTR_CURSOR_TYPE festlegen. |
| SQL_CO_FFO | Aktiviert schnelle vorwärtsgerichtete, schreibgeschützte Cursor, deaktiviert SQLGetData für vorwärtsgerichtete, schreibgeschützte Cursor. |
| SQL_CO_AF | Aktiviert die Option "AutoFetch" für jeden Cursortyp. Wenn diese Option für ein Anweisungshandle festgelegt ist, generiert SQLExecute oder SQLExecDirect ein implizites SQLFetchScroll (SQL_FIRST). Der Cursor wird geöffnet, und der erste Zeilenbatch wird in einem einzelnen Roundtrip zum Server zurückgegeben. |
| SQL_CO_FFO_AF | Aktiviert schnelle Vorwärtscursor mit der Option "AutoFetch". Sie ist identisch mit der Angabe von SQL_CO_AF und SQL_CO_FFO. |
Wenn diese Optionen festgelegt sind, schließt der Server den Cursor automatisch, wenn erkannt wird, dass die letzte Zeile abgerufen wurde. Die Anwendung muss weiterhin SQLFreeStmt (SQL_CLOSE) oder SQLCloseCursor aufrufen, aber der Treiber muss die schließende Benachrichtigung nicht an den Server senden.
Wenn die Auswahlliste eine Text-, ntext- oder Bildspalte enthält, wird der schnelle Vorwärtscursor in einen dynamischen Cursor konvertiert, und SQLGetData ist zulässig.
SQL_SOPT_SS_DEFER_PREPARE
Das attribut SQL_SOPT_SS_DEFER_PREPARE bestimmt, ob die Anweisung sofort oder zurückgestellt wird, bis SQLExecute, SQLDescribeCol oder SQLDescribeParam ausgeführt wird. In SQL Server 7.0 und früheren Versionen wird diese Eigenschaft ignoriert (keine verzögerte Vorbereitung). Der ValuePtr-Wert ist vom Typ SQLLEN.
| ValuePtr-Wert | BESCHREIBUNG |
|---|---|
| SQL_DP_ON | Vorgabe. Nach dem Aufrufen der SQLPrepare-Funktion wird die Anweisungsvorbereitung verzögert, bis SQLExecute aufgerufen wird oder der Metaproperty-Vorgang (SQLDescribeCol oder SQLDescribeParam) ausgeführt wird. |
| SQL_DP_OFF | Die Anweisung wird vorbereitet, sobald SQLPrepare ausgeführt wird. |
SQL_SOPT_SS_REGIONALIZE
Das attribut SQL_SOPT_SS_REGIONALIZE wird verwendet, um die Datenkonvertierung auf Anweisungsebene zu bestimmen. Das Attribut bewirkt, dass der Treiber die Gebietsschemaeinstellung des Clients beim Konvertieren von Datums-, Uhrzeit- und Währungswerten in Zeichenfolgen berücksichtigt. Die Konvertierung erfolgt nur von systemeigenen SQL Server-Datentypen in Zeichenfolgen.
Der ValuePtr-Wert ist vom Typ SQLLEN.
| ValuePtr-Wert | BESCHREIBUNG |
|---|---|
| SQL_RE_OFF | Vorgabe. Der Treiber konvertiert Datums-, Uhrzeit- und Währungsdaten nicht mithilfe der Clientgebietsschemaeinstellung in Zeichenfolgendaten. |
| SQL_RE_ON | Der Treiber verwendet die Gebietsschemaeinstellung des Clients beim Konvertieren von Datums-, Uhrzeit- und Währungsdaten in Zeichenfolgendaten. |
Regionale Konvertierungseinstellungen gelten für Währungs-, Zahlen-, Datums- und Uhrzeitdatentypen. Die Konvertierungseinstellung gilt nur für Ausgabekonvertierungen, wenn Währungs-, Numerische, Datums- oder Uhrzeitwerte in Zeichenfolgen konvertiert werden.
Hinweis
Wenn die Anweisungsoption SQL_SOPT_SS_REGIONALIZE aktiviert ist, verwendet der Treiber die Gebietsschemaregistrierungseinstellungen für den aktuellen Benutzer. Der Treiber berücksichtigt das Gebietsschema des aktuellen Threads nicht, wenn sie von der Anwendung festgelegt wird, z. B. durch Aufrufen von SetThreadLocale.
Das Verändern des regionalen Verhaltens einer Datenquelle kann Anwendungsfehler verursachen. Eine Anwendung, die Datumszeichenfolgen analysiert und erwartet, dass Datumszeichenfolgen wie durch ODBC definiert angezeigt werden, kann durch das Ändern dieses Werts beeinträchtigt werden.
SQL_SOPT_SS_TEXTPTR_LOGGING
Das SQL_SOPT_SS_TEXTPTR_LOGGING Attribut schaltet die Protokollierung von Vorgängen für Spalten ein, die Text - oder Bilddaten enthalten. Der ValuePtr-Wert ist vom Typ SQLLEN.
| ValuePtr-Wert | BESCHREIBUNG |
|---|---|
| SQL_TL_OFF | Deaktiviert die Protokollierung von Vorgängen, die für Text - und Bilddaten ausgeführt werden. |
| SQL_TL_ON | Vorgabe. Ermöglicht die Protokollierung von Vorgängen, die für Text - und Bilddaten ausgeführt werden. |
SQL_SOPT_SS_HIDDEN_COLUMNS
Das attribut SQL_SOPT_SS_HIDDEN_COLUMNS macht spalten, die in einer SQL Server SELECT FOR BROWSE-Anweisung ausgeblendet sind, im Resultset verfügbar. Der Treiber macht diese Spalten nicht standardmäßig verfügbar. Der ValuePtr-Wert ist vom Typ SQLLEN.
| ValuePtr-Wert | BESCHREIBUNG |
|---|---|
| SQL_HC_OFF | Vorgabe. FOR BROWSE-Spalten werden aus dem Resultset ausgeblendet. |
| SQL_HC_ON | Macht FOR BROWSE-Spalten verfügbar. |
SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT
Das attribut SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT gibt den Nachrichtentext für die Abfragebenachrichtigungsanforderung zurück.
SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS
Das attribut SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS gibt die Optionen an, die für die Abfragebenachrichtigungsanforderung verwendet werden. Diese werden in einer Zeichenfolge mit name=value Syntax wie unten angegeben angegeben. Die Anwendung ist dafür verantwortlich, den Dienst zu erstellen und Benachrichtigungen aus der Warteschlange zu lesen.
Die Syntax der Zeichenfolge für die Abfragebenachrichtigungsoptionen lautet:
service=<service-name>[;(local database=<database>|broker instance=<broker instance>)]
Beispiel:
service=mySSBService;local database=mydb
SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT
Das attribut SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT gibt die Anzahl der Sekunden an, die die Abfragebenachrichtigung aktiv bleiben soll. Der Standardwert ist 432000 Sekunden (5 Tage). Der ValuePtr-Wert ist vom Typ SQLLEN.
SQL_SOPT_SS_PARAM_FOCUS
Das attribut SQL_SOPT_SS_PARAM_FOCUS gibt den Fokus für nachfolgende SQLBindParameter-, SQLGetDescField-, SQLSetDescField-, SQLGetDescRec- und SQLSetDescRec-Aufrufe an.
Der Typ für SQL_SOPT_SS_PARAM_FOCUS ist SQLULEN.
Der Standardwert ist 0. Dies bedeutet, dass diese Adressparameter, die Parametermarkierungen in der SQL-Anweisung entsprechen, entsprechen. Bei Festlegung auf die Parameternummer eines Tabellenwertparameters werden diese Adressspalten dieses Tabellenwertparameters aufgerufen. Wenn dieser Wert auf einen Wert festgelegt ist, der nicht die Parameternummer eines Tabellenwertparameters ist, geben diese Aufrufe den Fehler IM020 zurück: "Der Parameterfokus verweist nicht auf einen Tabellenwertparameter".
SQL_SOPT_SS_NAME_SCOPE
Das attribut SQL_SOPT_SS_NAME_SCOPE gibt den Namensbereich für nachfolgende Katalogfunktionsaufrufe an. Das von SQLColumns zurückgegebene Resultset hängt von der Einstellung SQL_SOPT_SS_NAME_SCOPE ab.
Der Typ für SQL_SOPT_SS_NAME_SCOPE ist SQLULEN.
| ValuePtr-Wert | BESCHREIBUNG |
|---|---|
| SQL_SS_NAME_SCOPE_TABLE | Vorgabe. Gibt bei Verwendung von Tabellenwertparametern an, dass Metadaten für tatsächliche Tabellen zurückgegeben werden sollen. Wenn Sie das Feature "Sparse Columns" verwenden, gibt SQLColumns nur Spalten zurück, die keine Elemente der Geringen column_setsind. |
| SQL_SS_NAME_SCOPE_TABLE_TYPE | Gibt an, dass für die Anwendung Metadaten für einen Tabellentyp anstelle einer tatsächlichen Tabelle erforderlich sind (Katalogfunktionen sollten Metadaten für Tabellentypen zurückgeben). Anschließend übergibt die Anwendung die TYPE_NAME des Tabellenwertparameters als TableName-Parameter . |
| SQL_SS_NAME_SCOPE_EXTENDED | Wenn Sie das Feature für geringe Spalten verwenden, gibt SQLColumns unabhängig von der column_set Mitgliedschaft alle Spalten zurück. |
| SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET | Wenn Sie das Feature für geringe Spalten verwenden, gibt SQLColumns nur Spalten zurück, die Elemente der geringen column_setSpalte sind. |
| SQL_SS_NAME_SCOPE_DEFAULT | Gleich SQL_SS_NAME_SCOPE_TABLE. |
SS_TYPE_CATALOG_NAME und SS_TYPE_SCHEMA_NAME werden mit den Parametern "CatalogName" bzw. "SchemaName" verwendet, um den Katalog und das Schema für den Parameter mit Tabellenwert zu identifizieren. Wenn eine Anwendung das Abrufen von Metadaten für Tabellenwertparameter abgeschlossen hat, muss sie SQL_SOPT_SS_NAME_SCOPE wieder auf den Standardwert SQL_SS_NAME_SCOPE_TABLE festlegen.
Wenn SQL_SOPT_SS_NAME_SCOPE auf SQL_SS_NAME_SCOPE_TABLE festgelegt ist, schlagen Abfragen von Verbindungsservern fehl. Aufrufe von SQLColumns oder SQLPrimaryKeys mit einem Katalog, der eine Serverkomponente enthält, schlagen fehl.
Wenn Sie versuchen, SQL_SOPT_SS_NAME_SCOPE auf einen ungültigen Wert festzulegen, wird SQL_ERROR zurückgegeben, und ein Diagnosedatensatz wird mit SQLSTATE HY024 und der Meldung "Ungültiger Attributwert" generiert.
Wenn eine Katalogfunktion andere SQLTables, SQLColumns oder SQLPrimaryKeys aufgerufen wird, wenn SQL_SOPT_SS_NAME_SCOPE einen anderen Wert als SQL_SS_NAME_SCOPE_TABLE aufweist, wird SQL_ERROR zurückgegeben. Ein Diagnosedatensatz wird mit SQLSTATE HY010 generiert und die Meldung "Funktionssequenzfehler (SQL_SOPT_SS_NAME_SCOPE ist nicht auf SQL_SS_NAME_SCOPE_TABLE festgelegt)" angezeigt.