Effekte von ISO-Optionen
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Der ODBC-Standard orientiert sich eng am ISO-Standard, und ODBC-Anwendungen erwarten von einem ODBC-Treiber Standardverhalten. Damit das Verhalten dem im ODBC-Standard definierten Verhalten besser entspricht, verwendet der SQL Server Native Client ODBC-Treiber immer alle ISO-Optionen, die in der Version von SQL Server verfügbar sind, mit der sie eine Verbindung herstellt.
Wenn der SQL Server Native Client ODBC-Treiber eine Verbindung mit einer Instanz von SQL Server herstellt, erkennt der Server, dass der Client den SQL Server Native Client ODBC-Treiber verwendet, und legt mehrere Optionen fest.
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. Websites, die ein anderes Verhalten zwischen ODBC- oder DB-Library-Clients beobachten, wenn dieselbe SQL-Anweisung ausgeführt wird, sollten nicht davon ausgehen, dass dies auf ein Problem mit dem SQL Server Native Client ODBC-Treiber verweist. Sie sollten die Anweisung zuerst in der DB-Library-Umgebung mit den gleichen SET-Optionen erneut ausführen, wie sie vom SQL Server Native Client ODBC-Treiber verwendet werden.
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 auch eine vierte SET-Option CONCAT_NULL_YIELDS_NULL festgelegt. Der ODBC-Treiber des nativen SQL Server-Clients legt diese Optionen nicht fest, wenn AnsiNPW=NO in der Datenquelle oder in SQLDriverConnect oder SQLBrowseConnect angegeben ist.
Wie die zuvor erwähnten ISO-Optionen aktiviert der ODBC-Treiber des SQL Server Native Client nicht die Option QUOTED_IDENTIFIER, wenn "QuotedID=NO" in der Datenquelle oder in SQLDriverConnect oder SQLBrowseConnect angegeben ist.
Damit der Treiber den aktuellen Status von SET-Optionen kennen 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.
Weitere Informationen
Ausführen von ODBC-Anweisungen
SQLDriverConnect
SQLBrowseConnect