Använda databasspegling

Gäller för:SQL Server

Ladda ned OLE DB-drivrutins

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.

Databasspegling, introducerad i SQL Server 2005 (9.x), är en lösning för att öka databastillgänglighet och dataredundans. OLE DB Driver for SQL Server 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 databasen väl har konfigurerats.

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. OLE DB Driver for SQL Server 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.

OLE DB-drivrutin för SQL Server

OLE DB Driver for SQL Server stöder 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. För mer information, se Att använda Connection String Keywords med OLE DB Driver för SQL Server.

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 OLE DB Driver for SQL Server, såsom ett datakällobjekt.

För detaljer om OLE DB Driver for SQL Server-stöd för databasspegling, se Initialization and Authorization Properties.