Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Anmärkning
Databasspegling i SQL Server är en distinkt teknik från Microsoft Fabric Database Mirroring.
Med databasspegling i SQL Server kan du behålla en kopia eller spegling av en SQL Server-databas på en väntelägesserver. Spegling säkerställer att två separata kopior av data alltid finns, vilket ger hög tillgänglighet och fullständig dataredundans. Microsoft SqlClient-providern för SQL Server ger implicit stöd för databasspegling. Utvecklaren behöver inte göra något när klienten har konfigurerats för en SQL Server-databas. SqlConnection Dessutom stöder objektet ett explicit anslutningsläge som gör det möjligt att ange namnet på en redundanspartnerserver i ConnectionString.
Följande förenklade sekvens av händelser inträffar för ett SqlConnection objekt som är avsett för en databas som konfigurerats för spegling:
- Klientprogrammet ansluter till huvuddatabasen och servern skickar tillbaka namnet på partnerservern, som klienten cachelagrar.
- Om servern som innehåller huvuddatabasen misslyckas eller anslutningen avbryts går anslutnings- och transaktionstillståndet förlorat. Klientprogrammet försöker återupprätta en anslutning till huvuddatabasen och misslyckas.
- Klientprogrammet försöker sedan transparent upprätta en anslutning till speglingsdatabasen på partnerservern. Om den lyckas omdirigeras anslutningen till speglingsdatabasen, som sedan blir den nya huvuddatabasen.
Ange failover-partnern i anslutningssträngen
Om du anger namnet på en redundanspartnerserver i anslutningssträngen och huvuddatabasen inte är tillgänglig när klientprogrammet ansluter, försöker klienten transparent ansluta till redundanspartnern.
";Failover Partner=PartnerServerName"
Om du utelämnar namnet på redundanspartnerservern och huvuddatabasen inte är tillgänglig när klientprogrammet först ansluter inträffar en SqlException .
När en SqlConnection har öppnats returnerar servern partnernamnet för redundans, vilket ersätter alla värden som anges i anslutningssträngen.
Anmärkning
Du måste uttryckligen ange det första katalog- eller databasnamnet i anslutningssträng för databasspeglingsscenarier. Om klienten får redundansinformation om en anslutning som inte har en uttryckligen angiven initial katalog eller databas cachelagras inte redundansinformationen och programmet försöker inte redundansväxla om huvudservern misslyckas. Om en anslutningssträng har ett värde för redundanspartnern, men inget värde för den första katalogen eller databasen, utlöses enInvalidArgumentException.
Hämtar det aktuella servernamnet
När en redundansväxling inträffar kan du med hjälp av DataSource-egenskapen hos ett SqlConnection-objekt hämta namnet på den server som den aktuella anslutningen är ansluten till. Följande kodfragment hämtar namnet på den aktiva servern, förutsatt att anslutningsvariabeln refererar till en öppen SqlConnection.
När en redundanshändelse inträffar och anslutningen växlar till speglingsservern uppdateras egenskapen DataSource för att återspegla speglingsnamnet.
string activeServer = connection.DataSource;
SqlClient-speglingsbeteende
Klienten försöker alltid ansluta till huvudservern. Om det misslyckas försöker den redundanspartnern. Om speglingsdatabasen redan har växlats till huvudrollen på partnerservern lyckas anslutningen och den nya huvudspeglingsmappningen skickas till klienten och cachelagras under anropets AppDomainlivslängd. Den lagras inte i beständig lagring och är inte tillgänglig för framtida anslutningar i en annan AppDomain eller process. Den är dock tillgänglig för senare anslutningar inom samma AppDomain. En annan AppDomain - eller process som körs på samma eller en annan dator har alltid sin pool med anslutningar och dessa anslutningar återställs inte. I så fall, om den primära databasen går ner, misslyckas varje process eller AppDomain en gång och poolen rensas automatiskt.
Anmärkning
Speglingsstöd på servern konfigureras per databas. Om datamanipuleringsåtgärder utförs mot andra databaser som inte ingår i huvud-/speglingsuppsättningen, antingen genom att använda flerdelsnamn eller genom att ändra den aktuella databasen, sprids inte ändringarna till dessa andra databaser i händelse av fel. Inget fel genereras när data ändras i en databas som inte speglas. Utvecklaren måste utvärdera den möjliga effekten av sådana åtgärder.
Nästa steg
Databasspeglingsresurser
Konceptuell dokumentation och information om hur du konfigurerar, distribuerar och administrerar spegling finns i följande resurser i SQL Server-dokumentationen.
| Resource | Description |
|---|---|
| Databasspegling | Beskriver hur du konfigurerar spegling i SQL Server. |