Freigeben über


Effekte von ISO-Optionen

Der ODBC-Standard ist eng mit dem ISO-Standard übereinstimmt, und ODBC-Anwendungen erwarten ein Standardverhalten von einem ODBC-Treiber. 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 Fahrer stellt diese Aussagen selbst aus; Die ODBC-Anwendung fordert sie nicht an. Wenn Sie diese Optionen festlegen, können ODBC-Anwendungen, die den Treiber verwenden, portierbarer sein, da das Serververhalten dann mit dem ISO-Standard übereinstimmt.

DB-Library-basierte Anwendungen aktivieren diese Optionen in der Regel 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 von Benutzern und Anwendungen jederzeit aktiviert und deaktiviert werden können, sollten Entwickler von gespeicherten Prozeduren und Triggern auch ihre Prozeduren und Trigger testen, wobei die oben aufgeführten SET-Optionen sowohl aktiviert als auch deaktiviert sind. Dadurch wird sichergestellt, dass die Prozeduren und Trigger unabhängig davon ordnungsgemäß funktionieren, welche Optionen eine bestimmte Verbindung beim Aufrufen der Prozedur oder des Triggers festgelegt haben kann. Trigger oder gespeicherte Prozeduren, die eine bestimmte Einstellung für eine dieser Optionen erfordern, sollten am Anfang des Triggers oder der gespeicherten Prozedur eine SET-Anweisung ausgeben. Diese SET-Anweisung bleibt nur für die Ausführung des Triggers oder der gespeicherten Prozedur wirksam; wenn die Prozedur oder der Trigger endet, 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 SQL Server Native Client ODBC-Treiber 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 der Verbindungsoptionen festlegen. Wenn die Anwendung SET-Anweisungen ausgibt, kann der Treiber falsche SQL-Anweisungen generieren.

Siehe auch

Ausführen von Anweisungen (ODBC)
SQLDriverConnect
SQLBrowseConnect