Effekter av ISO-alternativ

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

ODBC-standarden är nära ISO-standarden, och ODBC-applikationer förväntar sig standardbeteende från en ODBC-drivrutin. För att få dess beteende att bättre överensstämma med det som definieras i ODBC-standarden använder SQL Server Native Client ODBC-drivrutinen alltid alla ISO-alternativ som finns tillgängliga i den version av SQL Server som den ansluter till.

När SQL Server Native Client ODBC-drivrutinen ansluter till en instans av SQL Server, upptäcker servern att klienten använder SQL Server Native Client ODBC-drivrutinen och sätter flera alternativ på.

Föraren ger själv dessa uttalanden; ODBC-ansökan gör inget för att begära dem. Att ställa in dessa inställningar gör att ODBC-applikationer som använder drivrutinen blir mer portabla eftersom serverbeteendet då matchar ISO-standarden.

DB-biblioteksbaserade applikationer aktiverar generellt inte dessa alternativ. Webbplatser som observerar olika beteenden mellan ODBC- eller DB-Library klienter när samma SQL-sats körs bör inte anta att detta pekar på ett problem med den SQL Server Native Client ODBC-drivrutinen. De bör först köra om satsen i DB-Library-miljön med samma SET alternativ som används av SQL Server Native Client ODBC-drivrutinen.

Eftersom SET alternativ kan slås på och av när som helst av användare och applikationer, bör utvecklare av lagrade procedurer och triggers också vara noga med att testa sina procedurer och triggers med alternativen SET ovan både på och av. Detta säkerställer att procedurerna och triggers fungerar korrekt oavsett vilka alternativ en viss anslutning kan ha aktiverat när de anropar proceduren eller triggern. Triggers eller lagrade procedurer som kräver en särskild inställning för något av dessa alternativ bör ge ett SET uttalande i början av triggern eller den lagrade proceduren. Detta SET uttalande gäller endast för exekveringen av triggern eller den lagrade proceduren; när proceduren eller triggern avslutas återställs den ursprungliga inställningen.

När man är ansluten till en instans av SQL Server är ett fjärde SET alternativ också inställt, CONCAT_NULL_YIELDS_NULL, på. SQL Server Native Client ODBC-drivrutinen sätter inte dessa alternativ om AnsiNPW=NO anges i datakällan eller på vare sig SQLDriverConnect eller SQLBrowseConnect.

Precis som ISO-alternativen nämnda tidigare, aktiverar QUOTED_IDENTIFIER inte SQL Server Native Client ODBC-drivrutinen alternativet om QuotedID=NO anges i datakällan eller på vare sig SQLDriverConnect eller SQLBrowseConnect.

För att låta föraren känna till det aktuella läget för SET alternativen bör ODBC-applikationer inte använda Transact-SQL-satsen SET för att ställa in dessa alternativ. De bör bara ställa in dessa alternativ med antingen datakällan eller anslutningsalternativen. Om applikationen ger SET ut satser kan drivrutinen generera felaktiga SQL-satser.