Användning av databasspegling i SQL Server Native Client

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Note

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd AlwaysOn-tillgänglighetsgrupper i stället.

Important

SQL Server Native Client (SNAC) levereras inte med:

  • SQL Server 2022 (16.x) och senare versioner
  • SQL Server Management Studio 19 och senare versioner

SQL Server Native Client (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny programutveckling.

Använd någon av följande drivrutiner för nya projekt:

För SQLNCLI som levereras som en komponent i SQL Server-databasmotorn (versioner 2012 till och med 2019), se det här Support Lifecycle-undantag.

Databasspegling, introducerad i SQL Server 2005 (9.x), är en lösning för att öka databastillgänglighet och dataredundans. SQL Server Native Client ger implicit stöd för databasspegelning, så utvecklaren behöver inte skriva någon kod eller vidta några andra åtgärder när den väl har konfigurerats för databasen.

Databasspegling, som implementeras per databas, behåller en kopia av en SQL Server-produktionsdatabas på en väntelägesserver. Den här servern är antingen en frekvent eller varm väntelägesserver, beroende på konfigurationen och tillståndet för databasspeglingssessionen. En hot standby-server stödjer snabb failover utan förlust av committed transaktioner, och en varm standby-server stödjer tvingande service (med möjlig dataförlust).

Produktionsdatabasen kallas huvuddatabasen, och standby-kopian kallas spegeldatabasen. Den huvudsakliga databasen och spegeldatabasen måste finnas på separata instanser av SQL Server (serverinstanser), och de bör finnas på separata datorer om möjligt.

Produktionsserverinstansen, kallad principalservern, kommunicerar med standby-serverinstansen, kallad mirror server. Principal- och spegelservrarna fungerar som partners inom en databasspegelsession. Om huvudservern misslyckas kan spegelservern göra sin databas till huvuddatabasen genom en process som kallas failover. Till exempel är Partner_A och Partner_B två partnerservrar, med huvuddatabasen ursprungligen på Partner_A som huvudserver och speglingsdatabasen som finns på Partner_B som speglingsserver. Om Partner_A går offline kan databasen på Partner_B redundansväxla till den aktuella huvuddatabasen. När Partner_A återansluter till speglingssessionen blir den speglingsservern och dess databas blir speglingsdatabasen.

Alternativa databasspeglingskonfigurationer erbjuder olika prestanda- och datasäkerhetsnivåer och stöder olika former av redundans. Mer information finns i Databasspegling (SQL Server).

Det är möjligt att använda ett alias när man specificerar namnet på spegeldatabasen.

Note

För information om initiala anslutningsförsök och återanslutningsförsök till en speglad databas, se Connect Clients to a Database Mirroring Session (SQL Server).

Programmeringsöverväganden

När huvuddatabasservern misslyckas får klientprogrammet fel som svar på API-anrop, vilket indikerar att anslutningen till databasen har gått förlorad. När detta händer förloras alla obundna ändringar i databasen och den aktuella transaktionen rullas tillbaka. Om detta händer bör applikationen stänga anslutningen (eller släppa datakällobjektet) och öppna det igen. Anslutningen omdirigeras transparent till spegeldatabasen, som nu fungerar som huvudserver.

När en anslutning upprättas skickar huvudservern identiteten för sin redundanspartner till den klient som ska användas vid redundans. Om en applikation försökte etablera en anslutning efter att huvudservern gått sönder, känner klienten inte till failover-partnerns identitet. För att ge klienterna möjlighet att hantera detta scenario tillåter en initialiseringsegenskap och ett tillhörande nyckelord reťazec pripojenia klienten att själv ange identiteten på failover-partnern. Klientattributet används endast i detta scenario; Om huvudservern är tillgänglig används den inte. Om failover-partnerservern som tillhandahålls av klienten inte refererar till en server som fungerar som failover-partner, nekas anslutningen av servern. För att låta applikationer anpassa sig till konfigurationsändringar kan identiteten på den faktiska failover-partnern fastställas genom att inspektera attributet efter att anslutningen har etablerats. Du bör överväga att cachelagra partnerinformationen för att uppdatera reťazec pripojenia eller utarbeta en återförsöksstrategi om det första försöket att skapa en anslutning misslyckas.

Note

Du måste uttryckligen specificera vilken databas en anslutning ska använda om du vill använda denna funktion i en DSN, reťazec pripojenia eller connection property/attribut. SQL Server Native Client kommer inte att försöka failover till partnerdatabasen om detta inte görs.

Spegeling är en funktion i databasen. Applikationer som använder flera databaser kanske inte kan utnyttja denna funktion.

Dessutom är servernamn okänsliga för små och små bokstaver, men databasnamn är små och kärl. Du bör därför se till att du använder samma chassi i DSN och anslutningssträngar.

SQL Server Native Client OLE DB Provider

SQL Server Native Client OLE DB-leverantören stödjer databasspegling genom anslutnings- och reťazec pripojenia-attribut. Egenskapen SSPROP_INIT_FAILOVERPARTNER har lagts till i DBPROPSET_SQLSERVERDBINIT-egenskapsuppsättningen, och nyckelordet FailoverPartner är ett nytt reťazec pripojenia-attribut för DBPROP_INIT_PROVIDERSTRING. Mer information finns i Använda nyckelord för anslutningssträng med SQL Server Native Client.

Failover-cachen underhålls så länge leverantören är laddad, vilket är tills CoUninitialize anropas eller så länge applikationen har en referens till något objekt som hanteras av SQL Server Native Client OLE DB-leverantören, såsom ett datakällobjekt.

För detaljer om SQL Server Native Client OLE DB-leverantörers stöd för databasspegling, se Initialization and Authorization Properties.

SQL Server Native Client ODBC-drivrutin

SQL Server Native Client ODBC-drivrutinen stödjer databasspegling genom anslutnings- och reťazec pripojenia-attribut. Specifikt har attributet SQL_COPT_SS_FAILOVER_PARTNER lagts till för användning med funktionerna SQLSetConnectAttr och SQLGetConnectAttr; och nyckelordet Failover_Partner har lagts till som ett nytt attribut reťazec pripojenia.

Failover-cachen underhålls så länge applikationen har minst ett miljöhandtag tilldelat. Omvänt förloras den när det sista miljöhandtaget är utplacerat.

Note

ODBC Driver Manager har förbättrats för att stödja specifikationen av failover-serverns namn.