Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met databasespiegeling in SQL Server kunt u een kopie of spiegel van een SQL Server database op een stand-byserver bewaren. Spiegeling zorgt ervoor dat er altijd twee afzonderlijke kopieën van de gegevens bestaan, waardoor hoge beschikbaarheid en volledige gegevensredundantie worden geboden. Nadat u databasespiegeling voor een SQL Server-database hebt geconfigureerd, ondersteunt Microsoft.Data.SqlClient dit zonder extra clientcode. U kunt ook een failoverpartnerserver opgeven in de ConnectionString eigenschap.
De volgende reeks gebeurtenissen vindt plaats wanneer het SqlConnection object is gericht op een database die is geconfigureerd voor spiegeling:
De clienttoepassing maakt verbinding met de principal-database en de server stuurt de naam van de partnerserver terug, die vervolgens in de cache op de client wordt opgeslagen.
Als de server met de principal-database mislukt of de verbinding wordt onderbroken, gaat de verbinding en de transactiestatus verloren. De clienttoepassing probeert opnieuw verbinding te maken met de principal-database en mislukt.
De clienttoepassing probeert vervolgens transparant een verbinding tot stand te brengen met de gespiegelde database op de partnerserver. Als dit lukt, wordt de verbinding omgeleid naar de gespiegelde database, die vervolgens de nieuwe principal-database wordt.
De failoverpartner opgeven in de verbindingsreeks
Als u de naam opgeeft van een failoverpartnerserver in de verbindingsreeks, probeert de client transparant verbinding te maken met de failoverpartner als de principal-database niet beschikbaar is wanneer de clienttoepassing voor het eerst verbinding maakt.
";Failover Partner=PartnerServerName"
Als u de naam van de failoverpartnerserver weglaat en de principal-database niet beschikbaar is wanneer de clienttoepassing voor het eerst verbinding maakt, genereert SqlExceptionde provider .
Wanneer SqlConnection met succes wordt geopend, wordt de naam van de failoverpartner geretourneerd. Deze naam vervangt de waarde in de verbindingsreeks.
Notitie
U moet expliciet de initiële catalogus- of databasenaam opgeven in de verbindingsreeks voor scenario's voor databasespiegeling. Als de client failover-informatie ontvangt over een verbinding waarvoor niet expliciet een initiële catalogus of database is opgegeven, wordt de failover-informatie niet in de cache opgeslagen en probeert de toepassing niet over te schakelen als de hoofdserver een storing heeft. Als een verbindingsreeks een waarde heeft voor de failoverpartner, maar geen waarde voor de initiёle catalogus of database, wordt er een InvalidArgumentException gegenereerd.
De naam van de huidige server ophalen
Na een failover gebruikt u de eigenschap DataSource om de naam van de verbonden server op te halen. In het volgende codefragment wordt ervan uitgegaan dat de verbindingsvariabele verwijst naar een open exemplaar van de SqlConnection klasse.
Wanneer er een failover-gebeurtenis optreedt en de verbinding wordt overgeschakeld naar de mirrorserver, wordt de DataSource eigenschap bijgewerkt met de naam van de spiegel.
Dim activeServer As String = connection.DataSource
string activeServer = connection.DataSource;
Gedrag van SqlClient-mirroring
De client probeert altijd verbinding te maken met de huidige principal-server. Als dat mislukt, probeert het de failoverpartner. Als de mirrordatabase al is overgeschakeld naar de principalrol op de partnerserver, dan is de verbinding succesvol; de nieuwe mirrortoewijzing naar de client wordt verzonden en in de cache opgeslagen voor de levensduur van de aanroep AppDomain. Het wordt niet opgeslagen in permanente opslag en is niet beschikbaar voor volgende verbindingen in een ander AppDomain of proces. Het is echter beschikbaar voor latere verbindingen binnen hetzelfde AppDomain. Houd er rekening mee dat een ander AppDomain of proces dat op dezelfde of een andere computer wordt uitgevoerd, altijd een groep verbindingen heeft en dat deze verbindingen niet opnieuw worden ingesteld. In dat geval, als de primaire database uitvalt, elk proces of AppDomain één keer uitvalt en de pool automatisch wordt gewist.
Notitie
Ondersteuning voor spiegeling op de server wordt geconfigureerd per database. Als bewerkingen voor gegevensbewerkingen worden uitgevoerd op andere databases die niet zijn opgenomen in de principal/mirror-set, hetzij met behulp van namen van meerdere onderdelen of door de huidige database te wijzigen, worden de wijzigingen in deze andere databases niet doorgegeven in het geval van een storing. Er wordt geen fout gegenereerd wanneer gegevens worden gewijzigd in een database die niet wordt gespiegeld. De ontwikkelaar moet de mogelijke impact van dergelijke bewerkingen evalueren.
Hulpbronnen voor databasespiegeling
Zie de volgende bronnen in sql Server-documentatie voor conceptuele documentatie en informatie over het configureren, implementeren en beheren van spiegeling.
| Bron | Beschrijving |
|---|---|
| Databasespiegeling | Hierin wordt beschreven hoe u spiegeling instelt en configureert in SQL Server. |