Effekte von ISO-Optionen

Der ODBC-Standard orientiert sich eng am ISO-Standard, und ODBC-Anwendungen erwarten von einem ODBC-Treiber Standardverhalten. Um sein Verhalten noch stärker in Einklang mit dem vom ODBC-Standard definierten zu bringen, verwendet der SQL Server Native Client ODBC-Treiber stets die ISO-Optionen, die in der Version von SQL Server verfügbar sind, zu der er eine Verbindung aufgebaut hat.

Wenn der SQL Server Native Client ODBC-Treiber die Verbindung zu einer Instanz von SQL Server herstellt, erkennt der Server, dass der Client den SQL Server Native Client ODBC-Treiber verwendet, und aktiviert mehrere Optionen.

Der Treiber gibt diese Anweisungen selbst aus; die ODBC-Anwendung fordert sie nicht an. Durch das Einstellen dieser Optionen werden ODBC-Anwendungen, die den Treiber verwenden, besser portierbar, da das Serververhalten dem ISO-Standard entspricht.

DB-Library-basierte Anwendungen aktivieren diese Optionen im Allgemeinen nicht. Sites, die bei Ausführung einer bestimmten SQL-Anweisung ein unterschiedliches Verhalten bei ODBC- und DB-Library-Clients erkennen, sollten dies nicht als Anzeichen für ein Problem mit dem SQL Server Native Client ODBC-Treiber werten. Sie sollten die Anweisung zunächst in der DB-Library-Umgebung mit denselben SET-Optionen erneut ausführen, die auch der SQL Server Native Client ODBC-Treiber verwenden würde.

Da SET-Optionen jederzeit von Benutzern und Anwendungen aktiviert und deaktiviert werden können, sollten Entwickler von gespeicherten Prozeduren und Triggern diese mit den oben aufgeführten SET-Optionen sowohl im aktivierten als auch im deaktivierten Zustand testen. Dadurch wird sichergestellt, dass die Prozeduren und Trigger bei ihrem Aufruf korrekt ausgeführt werden, unabhängig davon, welche Optionen eine bestimmte Verbindung festgelegt hat. Wenn ein Trigger oder eine gespeicherte Prozedur eine bestimmte Einstellung für eine dieser Optionen erfordert, sollte am Anfang des Triggers bzw. der gespeicherten Prozedur eine SET-Anweisung ausgeführt werden. Die SET-Anweisung behält ihre Gültigkeit nur während der Ausführung des Triggers bzw. der gespeicherten Prozedur bei. Wenn der Trigger oder die Prozedur beendet ist, wird die ursprüngliche Einstellung wiederhergestellt.

Wenn eine Verbindung mit einer Instanz von SQL Server hergestellt wird, wird zudem eine vierte SET-Option, CONCAT_NULL_YIELDS_NULL, aktiviert. Der SQL Server Native Client ODBC-Treiber aktiviert diese Optionen nicht, wenn in der Datenquelle oder für SQLDriverConnect bzw. SQLBrowseConnect AnsiNPW=NO angegeben ist.

Ebenso wie die zuvor erwähnten ISO-Optionen aktiviert der SQL Server Native Client ODBC-Treiber die Option QUOTED_IDENTIFIER nicht, wenn QuotedID=NO in der Datenquelle oder für SQLDriverConnect bzw. SQLBrowseConnect angegeben ist.

Damit der Treiber den aktuellen Status der SET-Optionen ermitteln kann, sollten ODBC-Anwendungen die Transact-SQL SET-Anweisung nicht verwenden, um diese Optionen festzulegen. Sie sollten diese Optionen nur mithilfe der Datenquelle oder über die Verbindungsoptionen festlegen. Wenn die Anwendung SET-Anweisungen ausgibt, generiert der Treiber möglicherweise falsche SQL-Anweisungen.