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
Det här avsnittet innehåller information som hjälper dig att felsöka problem med att konfigurera en databasspeglingssession.
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.
Se till att du uppfyller alla förutsättningar för databasspegling.
| Problematik | Sammanfattning |
|---|---|
| Felmeddelande 1418 | Det här SQL Server-meddelandet anger att serverns nätverksadress inte kan nås eller inte finns, och det tyder på att du verifierar nätverksadressnamnet och återger kommandot. |
| Konton | Beskriver kraven för korrekt konfiguration av de konton under vilka SQL Server körs. |
| Slutpunkter | Beskriver kraven för korrekt konfiguration av databasspeglingsslutpunkten för varje serverinstans. |
| SystemAddress | Sammanfattar alternativen för att ange systemnamnet för en serverinstans i en databasspeglingskonfiguration. |
| Nätverksåtkomst | Dokumenterar kravet på att varje serverinstans ska kunna komma åt portarna för den andra serverinstansen eller instanserna via TCP. |
| Förberedelse av speglingsdatabas | Sammanfattar kraven för att förbereda speglingsdatabasen så att speglingen kan starta. |
| Åtgärden create-file misslyckades | Beskriver hur du svarar på en misslyckad create-file-åtgärd. |
| Starta spegling med Hjälp av Transact-SQL | Beskriver den nödvändiga ordningen för ALTER DATABASE database_name SET PARTNER ='partner_server'- instruktioner. |
| Transaktioner mellan databaser | En automatisk redundansväxling kan leda till automatisk och eventuellt felaktig lösning av osäkra transaktioner. Därför stöder databasspegling inte transaktioner mellan databaser. |
Accounts
De konton under vilka SQL Server körs måste vara korrekt konfigurerade.
Har kontona rätt behörigheter?
Om kontona körs på samma domänkonton minskar risken för felkonfiguration.
Om kontona körs i olika domäner eller inte är domänkonton måste inloggningen för ett konto skapas i huvudservern på den andra datorn och inloggningen måste beviljas CONNECT-behörigheter på slutpunkten. Mer information finns i Hantera metadata när du gör en databas tillgänglig på en annan serverinstans (SQL Server). Detta inkluderar nätverkstjänstkontot.
Om SQL Server körs som en tjänst som använder det lokala systemkontot måste du använda certifikat för autentisering. Mer information finns i Använda certifikat för en databasspeglingsslutpunkt (Transact-SQL).
Endpoints
Slutpunkter måste vara korrekt konfigurerade.
Kontrollera att varje serverinstans (huvudservern, speglingsservern och eventuella vittnen) har en databasspeglingsslutpunkt. Mer information finns i sys.database_mirroring_endpoints (Transact-SQL) och, beroende på autentiseringsform, antingen Skapa en databasspeglingsslutpunkt för Windows-autentisering (Transact-SQL) eller Använd certifikat för en databasspeglingsslutpunkt (Transact-SQL).
Kontrollera att portnumren är korrekta.
Om du vill identifiera den port som för närvarande är associerad med databasspeglingsslutpunkten för en serverinstans använder du katalogvyerna sys.database_mirroring_endpoints och sys.tcp_endpoints .
För problem med konfiguration av databasspegling som är svåra att förklara rekommenderar vi att du inspekterar varje serverinstans för att avgöra om den lyssnar på rätt portar.
Kontrollera att slutpunkterna har startats (STATE=STARTED). Använd följande Transact-SQL-instruktion på varje serverinstans.
SELECT state_desc FROM sys.database_mirroring_endpointsMer information om kolumnen state_desc finns i sys.database_mirroring_endpoints (Transact-SQL).
Om du vill starta en slutpunkt använder du följande Transact-SQL-instruktion.
ALTER ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP (LISTENER_PORT = <port_number>) FOR database_mirroring (ROLE = ALL); GOMer information finns i ALTER ENDPOINT (Transact-SQL).
Kontrollera att roll är korrekt. På varje serverinstans använder du följande Transact-SQL-instruktion.
SELECT role FROM sys.database_mirroring_endpoints; GOMer information finns i sys.database_mirroring_endpoints (Transact-SQL).
Inloggningen för tjänstkontot från den andra serverinstansen kräver CONNECT-behörighet. Kontrollera att inloggningen från den andra servern har behörigheten ANSLUT. För att avgöra vem som har CONNECT-behörighet för en slutpunkt använder du följande Transact-SQL-instruktion på varje serverinstans.
SELECT 'Metadata Check'; SELECT EP.name, SP.STATE, CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) AS GRANTOR, SP.TYPE AS PERMISSION, CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) AS GRANTEE FROM sys.server_permissions SP , sys.endpoints EP WHERE SP.major_id = EP.endpoint_id ORDER BY Permission,grantor, grantee; GO
Systemadress
För systemnamnet på en serverinstans i en databasspeglingskonfiguration kan du använda valfritt namn som entydigt identifierar systemet. Serveradressen kan vara ett systemnamn (om systemen finns i samma domän), ett fullständigt domännamn eller en IP-adress (helst en statisk IP-adress). Genom att använda det fullständigt kvalificerade domännamnet garanteras det att det fungerar. Mer information finns i Ange en servernätverksadress (databasspegling).
Nätverksåtkomst
Varje serverinstans måste kunna komma åt portarna för den andra serverinstansen eller instanserna via TCP. Detta är särskilt viktigt om serverinstanserna finns i olika domäner som inte litar på varandra (ej betrodda domäner). Detta begränsar mycket av kommunikationen mellan serverinstanserna.
Förberedelse av speglingsdatabas
Oavsett om du startar speglingen för första gången eller startar den igen efter att speglingen har inaktiverats, kontrollerar du att speglingsdatabasen är förberedd för spegling.
När du skapar speglingsdatabasen på speglingsservern kontrollerar du att du återställer säkerhetskopian av huvuddatabasen och anger samma databasnamn MED NORECOVERY. Dessutom måste alla loggsäkerhetskopior som skapats efter säkerhetskopieringen också tillämpas, återigen MED NORECOVERY.
Om det är möjligt rekommenderar vi också att filsökvägen (inklusive enhetsbeteckningen) i speglingsdatabasen är identisk med sökvägen till huvuddatabasen. Om filsökvägarna måste skilja sig åt, till exempel om huvuddatabasen finns på enheten F:, men speglingssystemet saknar en F:-enhet, måste du inkludera alternativet FLYTTA i RESTORE-instruktionen.
Viktigt!
Om du flyttar databasfilerna när du skapar speglingsdatabasen kanske du inte kan lägga till filer i databasen senare utan att speglingen pausas.
Om databasspeglingen har stoppats måste alla efterföljande loggsäkerhetskopior som görs på huvuddatabasen tillämpas på speglingsdatabasen innan speglingen kan startas om.
Mer information finns i Förbereda en speglingsdatabas för spegling (SQL Server).
Det gick inte att genomföra Create-File-operationen
Att lägga till en fil utan att påverka en speglingssession kräver att sökvägen till filen finns på båda servrarna. Om du flyttar databasfilerna när du skapar speglingsdatabasen kan en senare tilläggsfilåtgärd misslyckas på speglingsdatabasen och orsaka att speglingen pausas.
Så här åtgärdar du problemet:
Databasägaren måste ta bort speglingssessionen och återställa en fullständig säkerhetskopia av den filgrupp som innehåller den tillagda filen.
Ägaren måste sedan säkerhetskopiera loggen som innehåller tilläggsfilåtgärden på huvudservern och manuellt återställa loggsäkerhetskopian på speglingsdatabasen med alternativen WITH NORECOVERY och WITH MOVE. Detta skapar den angivna filsökvägen på speglingsservern och återställer den nya filen till den platsen.
För att förbereda databasen för en ny speglingssession måste ägaren också återställa UTAN ÅTERSTÄLLANDE några andra kvarvarande loggsäkerhetskopior från den primära servern.
Mer information finns i Ta bort databasspegling (SQL Server), Förbereda en speglingsdatabas för spegling (SQL Server), Upprätta en databasspeglingssession med Windows-autentisering (Transact-SQL), Använda certifikat för en databasspeglingsslutpunkt (Transact-SQL)eller Upprätta en databasspeglingssession med Windows-autentisering (SQL Server Management Studio).
Starta spegling med hjälp av Transact-SQL
Den ordning i vilken instruktionerna ALTER DATABASE
Den första instruktionen måste köras på speglingsservern. När den här instruktionen utfärdas försöker speglingsservern inte kontakta någon annan serverinstans. I stället instruerar speglingsservern databasen att vänta tills speglingsservern har kontaktats av huvudservern.
Den andra ALTER DATABASE-instruktionen måste köras på huvudservern. Den här instruktionen gör att huvudservern försöker ansluta till speglingsservern. När anslutningen har skapats försöker speglingen sedan ansluta till huvudservern på en annan anslutning.
Mer information finns i ALTER DATABASE (Transact-SQL).
Anmärkning
Information om hur du använder SQL Server Management Studio för att starta spegling finns i Upprätta en databasspeglingssession med Windows-autentisering (SQL Server Management Studio).
Transaktioner mellan databaser
När en databas speglas i högsäkerhetsläge med automatisk failover kan en automatisk failover leda till automatisk och eventuellt felaktig lösning av transaktioner i tvivelaktigt tillstånd. Om en automatisk failöver sker i en av databaserna medan en transaktion mellan databaser håller på att genomföras, kan logiska inkonsekvenser uppstå mellan databaserna.
De typer av transaktioner mellan databaser som kan påverkas av en automatisk redundans inkluderar följande:
En transaktion som uppdaterar flera databaser i samma instans av SQL Server.
Transaktioner som använder en Microsoft Distributed Transaction Coordinator (MS DTC).
Mer information finns i transaktioner mellan databaser och distribuerade transaktioner för AlwaysOn-tillgänglighetsgrupper och databasspegling (SQL Server).
Se även
Konfigurera databasspegling (SQL Server)
Transportsäkerhet för databasspegling och AlwaysOn-tillgänglighetsgrupper (SQL Server)