Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Försiktighet
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. För hög tillgänglighet använder du AlwaysOn-tillgänglighetsgrupper i stället.
Viktigt!
Databasspegling i SQL Server är en distinkt teknik från Microsoft Fabric Database-spegling. Spegling till Fabric ger bättre analytisk prestanda, möjlighet att förena din dataresurs med OneLake i Fabric och ge öppen tillgång till dina data i Delta Parquet-format.
Med spegling till Microsoft Fabric kan du kontinuerligt replikera din befintliga dataegendom direkt till OneLake i Fabric, inklusive data från SQL Server 2016+, Azure SQL Database, Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake med mera.
För att konfigurera ett vittne för en databas tilldelar databasägaren en databasmotorinstans till rollen som vittnesserver. Vittnesserverinstansen kan köras på samma dator som huvudserverinstansen eller speglingsserverinstansen, men detta minskar avsevärt robustheten för automatisk failover.
Vi rekommenderar starkt att vittnet finns på en separat dator. En viss server kan delta i flera samtidiga databasspeglingssessioner med samma eller olika partner. En viss server kan vara en partner i vissa sessioner och ett vittne i andra sessioner.
Vittnet är endast avsett för högsäkerhetsläge med automatisk övergång. Innan du anger ett vittne rekommenderar vi starkt att du ser till att egenskapen SAFETY för närvarande är inställd på FULL.
Viktigt!
Vi rekommenderar att du konfigurerar databasspegling under låg belastning eftersom konfigurationen kan påverka prestanda.
Upprätta ett vittne
På vittnesserverinstansen kontrollerar du att det finns en slutpunkt för databasspegling. Oavsett hur många speglingssessioner som ska stödjas får serverinstansen bara ha en databasspeglingsslutpunkt. Om du tänker använda den här serverinstansen exklusivt som vittne i databasspeglingssessioner tilldelar du rollen som vittne till slutpunkten (ROLE**=**WITNESS). Om du tänker använda den här serverinstansen som partner i en eller flera andra databasspeglingssessioner tilldelar du rollen för slutpunkten som ALLA.
Om du vill köra en SET WITNESS-instruktion måste databasspeglingssessionen redan startas (mellan partnerna) och tillståndet för vittnets slutpunkt måste anges till STARTED.
Om du vill veta om vittnesserverinstansen har sin databasspeglingsslutpunkt och om du vill lära dig dess roll och tillstånd använder du följande Transact-SQL-instruktion på den instansen:
SELECT role_desc, state_desc FROM sys.database_mirroring_endpointsViktigt!
Om en databasspeglingsslutpunkt finns och redan används rekommenderar vi att du använder slutpunkten för varje session på serverinstansen. Om du släpper en slutpunkt som används störs anslutningarna för de befintliga sessionerna. Om ett vittne har angetts för en session kan det leda till att huvudservern för sessionen förlorar kvorum genom att ta bort databasspeglingsslutpunkten. Om det inträffar tas databasen offline och dess användare kopplas från. Mer information finns i Kvorum: Hur ett vittne påverkar databasens tillgänglighet (databasspegling).
Om vittnet saknar en slutpunkt kan du läsa Skapa en databasspeglingsslutpunkt för Windows-autentisering (Transact-SQL).
Om partnerinstanserna körs under olika domänanvändarkonton skapar du en inloggning för de olika kontona i huvuddatabasen för varje instans. Mer information finns i Tillåt nätverksåtkomst till en databasspeglingsslutpunkt med Windows-autentisering (SQL Server).
Anslut till huvudservern och utfärda följande instruktion:
ALTER DATABASE <database_name> SET WITNESS =<server_network_address>
där <database_name> är namnet på databasen som ska speglas (det här namnet är detsamma för båda partnerna) och <server_network_address> är servernätverksadressen för vittnesserverinstansen.
Syntaxen för en servernätverksadress är följande:
TCP://<system-address>:<port>
där <systemadressen> är en sträng som entydigt identifierar måldatorsystemet och <porten> är det portnummer som används av speglingsslutpunkten för partnerserverinstansen. Mer information finns i Ange en servernätverksadress (databasspegling).
På huvudserverinstansen anger till exempel följande ALTER DATABASE-instruktion vittnet. Databasnamnet är AdventureWorks, systemadressen är DBSERVER3-namnet på vittnessystemet och porten som används av databasspeglingsslutpunkten för vittnet är
7022:ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://DBSERVER3:7022'
Example
I följande exempel upprättas ett dataspeglingsvittne. På vittnesserverinstansen (standardinstans på WITNESSHOST4):
Skapa en slutpunkt för den här serverinstansen för VITTNE-rollen med hjälp av porten
7022.CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GOSkapa en inloggning för domänanvändarkontot för partnerinstanser, om det är annorlunda; Anta till exempel att vittnet körs som
SOMEDOMAIN\witnessuser, men att partnerna körs somMYDOMAIN\dbousername. Skapa en inloggning för partnerna enligt följande:--Create a login for the partner server instances, --which are both running as MYDOMAIN\dbousername: USE master ; GO CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername]; GOPå var och en av partnerserverinstanserna skapar du en inloggning för vittnesserverinstansen:
--Create a login for the witness server instance, --which is running as SOMEDOMAIN\witnessuser: USE master ; GO CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser]; GOPå huvudservern anger du vittnet (som är på
WITNESSHOST4):ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4:7022' GO
Anmärkning
Serverns nätverksadress anger målserverinstansen efter portnumret, som mappar till speglingsslutpunkten för instansen.
Ett fullständigt exempel som visar säkerhetskonfiguration, förbereder speglingsdatabasen, konfigurerar partner och lägger till ett vittne finns i Konfigurera databasspegling (SQL Server).
Se även
ÄNDRA DATABAS (Transact-SQL)
Tillåt nätverksåtkomst till en databasspeglingsslutpunkt med Windows-autentisering (SQL Server)
Skapa en databasspeglingsslutpunkt för Windows-autentisering (Transact-SQL)
Upprätta en databasspeglingssession med Windows-autentisering (Transact-SQL)
Ta bort vittnet från en databasspeglingssession (SQL Server)
Databasspeglingsövervakare