Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Ten temat zawiera informacje ułatwiające rozwiązywanie problemów z konfigurowaniem sesji dublowania bazy danych.
Ostrzeżenie
Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. W celu zapewnienia wysokiej dostępności zamiast tego użyj zawsze włączonych grup dostępności.
Ważne
Dublowanie baz danych w programie SQL Server to odrębna technologia od dublowania bazy danych usługi Microsoft Fabric. Dublowanie do Fabric zapewnia lepszą wydajność analizy, możliwość ujednolicenia zasobu danych z OneLake w Fabric i otwierania dostępu do danych w formacie Delta Parquet.
Dzięki funkcji mirroringu w usłudze Microsoft Fabric można stale replikować istniejące zasoby danych bezpośrednio do usługi OneLake w Microsoft Fabric, w tym danych z programu SQL Server 2016 lub nowszego, usługi Azure SQL Database, usługi Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake i nie tylko.
Upewnij się, że spełniasz wszystkie wymagania wstępne dotyczące dublowania bazy danych.
| Problematyka | Podsumowanie |
|---|---|
| Komunikat o błędzie 1418 | Ten komunikat programu SQL Server wskazuje, że nie można uzyskać dostępu do adresu sieciowego serwera lub nie istnieje i sugeruje, że zweryfikowasz nazwę adresu sieciowego i ponownie uruchom polecenie. |
| Klienci | Omówienie wymagań dotyczących prawidłowego konfigurowania kont, w których działa program SQL Server. |
| Punkty końcowe | Omówienie wymagań dotyczących prawidłowego konfigurowania punktu końcowego mirroringu bazy danych dla każdego wystąpienia serwera. |
| SystemAddress | Podsumowuje alternatywy dla określenia nazwy systemu wystąpienia serwera w konfiguracji mirroringu bazy danych. |
| Dostęp sieciowy | Dokumentuje wymaganie, aby każde wystąpienie serwera mogło uzyskać dostęp do portów innego wystąpienia serwera lub wystąpień za pośrednictwem protokołu TCP. |
| Przygotowanie bazy danych lustrzanej | Podsumowuje wymagania dotyczące przygotowania bazy danych do trybu lustrzanego w celu umożliwienia rozpoczęcia lustrzanej replikacji. |
| Operacja tworzenia pliku nie powiodła się | Opisuje sposób reagowania na nieudaną operację tworzenia pliku. |
| Uruchamianie dublowania przy użyciu języka Transact-SQL | Opisuje wymaganą kolejność dla instrukcji ALTER DATABASE database_name SET PARTNER ='partner_server'. |
| Transakcje obejmujące wiele baz danych | Automatyczne przejście w tryb failover może prowadzić do automatycznego i prawdopodobnie nieprawidłowego rozwiązania transakcji nierozstrzygniętych. Z tego powodu dublowanie bazy danych nie obsługuje transakcji między bazami danych. |
Accounts
Konta, na których działa program SQL Server, muszą być poprawnie skonfigurowane.
Czy konta mają odpowiednie uprawnienia?
Jeśli konta są uruchomione na tych samych kontach domeny, szanse na błędną konfigurację zostaną zmniejszone.
Jeśli konta działają w różnych domenach lub nie są kontami domeny, identyfikator logowania jednego konta musi zostać utworzony na serwerze głównym na innym komputerze, a ten identyfikator logowania musi otrzymać uprawnienia CONNECT w punkcie końcowym. Aby uzyskać więcej informacji, zapoznaj się z Jak zarządzać metadanymi podczas udostępniania bazy danych na innym wystąpieniu serwera (SQL Server). Obejmuje to konto usługi sieciowej.
Jeśli program SQL Server jest uruchomiony jako usługa korzystająca z lokalnego konta systemowego, należy użyć certyfikatów do uwierzytelniania. Aby uzyskać więcej informacji, zobacz Używanie certyfikatów dla punktu końcowego mirroringu bazy danych (Transact-SQL).
Endpoints
Punkty końcowe muszą być poprawnie skonfigurowane.
Upewnij się, że każda instancja serwera (serwer główny, serwer lustrzany oraz świadek, jeśli jest obecny) ma punkt końcowy dublowania bazy danych. Aby uzyskać więcej informacji, zobacz sys.database_mirroring_endpoints (Transact-SQL) i, w zależności od formy uwierzytelniania, utwórz punkt końcowy dublowania bazy danych na potrzeby uwierzytelniania systemu Windows (Transact-SQL) lub Użyj certyfikatów dla punktu końcowego dublowania bazy danych (Transact-SQL).
Sprawdź, czy numery portów są poprawne.
Aby zidentyfikować port aktualnie powiązany z punktem końcowym mirroringu bazy danych wystąpienia serwera, użyj widoków katalogu sys.database_mirroring_endpoints i sys.tcp_endpoints.
W przypadku problemów z konfiguracją mirroringu bazy danych, które są trudne do zdiagnozowania, zalecamy sprawdzenie każdego wystąpienia serwera, aby ustalić, czy nasłuchuje na odpowiednich portach.
Upewnij się, że punkty końcowe zostały uruchomione (STATE=STARTED). W każdym wystąpieniu serwera użyj następującej instrukcji Transact-SQL.
SELECT state_desc FROM sys.database_mirroring_endpointsAby uzyskać więcej informacji na temat kolumny state_desc , zobacz sys.database_mirroring_endpoints (Transact-SQL).
Aby uruchomić punkt końcowy, użyj następującej instrukcji Transact-SQL.
ALTER ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP (LISTENER_PORT = <port_number>) FOR database_mirroring (ROLE = ALL); GOAby uzyskać więcej informacji, zobacz ALTER ENDPOINT (Transact-SQL).
Sprawdź, czy rola jest poprawna. W każdym wystąpieniu serwera użyj następującej instrukcji Transact-SQL.
SELECT role FROM sys.database_mirroring_endpoints; GOAby uzyskać więcej informacji, zobacz sys.database_mirroring_endpoints (Transact-SQL).
Logowanie do konta usługi z innego wystąpienia serwera wymaga uprawnienia CONNECT. Upewnij się, że konto na innym serwerze ma uprawnienie CONNECT. Aby określić, kto ma uprawnienie CONNECT dla punktu końcowego, w każdym wystąpieniu serwera użyj następującej instrukcji Transact-SQL.
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
Adres systemowy
W przypadku nazwy systemu wystąpienia serwera w konfiguracji mirroringu bazy danych można użyć dowolnej nazwy, która jednoznacznie identyfikuje system. Adres serwera może być nazwą systemu (jeśli systemy znajdują się w tej samej domenie), w pełni kwalifikowaną nazwą domeny lub adresem IP (najlepiej statycznym adresem IP). Korzystanie z w pełni kwalifikowanej nazwy domeny gwarantuje pracę. Aby uzyskać więcej informacji, zobacz Określanie adresu sieciowego serwera (dublowanie bazy danych).
Dostęp sieciowy
Każda instancja serwera musi mieć dostęp do portów innych instancji serwera za pośrednictwem protokołu TCP. Szczególnie istotne jest to, gdy wystąpienia serwera znajdują się w różnych domenach, które nie ufają sobie nawzajem (domeny niezaufane). Ogranicza to znaczną część komunikacji między wystąpieniami serwera.
Przygotowanie bazy danych kopii lustrzanej
Bez względu na to, czy uruchamiasz lustrzanie bazy danych po raz pierwszy, czy ponownie po jego usunięciu, upewnij się, że baza danych lustrzanych jest przygotowana do lustrzania.
Podczas tworzenia bazy danych lustrzanych na serwerze lustrzanym, upewnij się, że przywrócisz kopię zapasową głównej bazy danych, określając tę samą nazwę bazy danych używając parametru BEZODZYSKIWANIA. Ponadto, po utworzeniu tej kopii zapasowej, należy zastosować wszystkie utworzone później kopie zapasowe dziennika, używając zawsze opcji NORECOVERY.
Ponadto zalecamy, aby jeśli jest to możliwe, ścieżka pliku (w tym litera dysku) bazy danych dublowania była identyczna ze ścieżką głównej bazy danych. Jeśli ścieżki plików muszą się różnić, na przykład jeśli główna baza danych znajduje się na dysku "F:", ale system dublowania nie ma dysku F:, należy dołączyć opcję MOVE w instrukcji RESTORE.
Ważne
W przypadku przenoszenia plików bazy danych podczas tworzenia dublowanej bazy danych może nie być możliwe późniejsze dodanie plików do bazy danych bez wstrzymania dublowania.
Jeśli dublowanie bazy danych zostało zatrzymane, przed ponownym uruchomieniem dublowania należy zastosować wszystkie kolejne kopie zapasowe dziennika wykonane w głównej bazie danych.
Aby uzyskać więcej informacji, zobacz Przygotowywanie bazy danych do odbicia lustrzanego (SQL Server).
Operacja Create-File nieudana
Dodanie pliku bez wpływu na sesję dublowania wymaga, aby ścieżka pliku istniała na obu serwerach. W związku z tym w przypadku przenoszenia plików bazy danych podczas tworzenia dublowanej bazy danych późniejsze operacje dodawania plików mogą zakończyć się niepowodzeniem w bazie danych dublowanej i spowodować wstrzymanie dublowania.
Aby rozwiązać ten problem:
Właściciel bazy danych musi usunąć sesję dublowania i przywrócić pełną kopię zapasową grupy plików zawierającej dodany plik.
Właściciel musi następnie utworzyć kopię zapasową dziennika transakcji zawierającego operację dodawania pliku na serwerze głównym i ręcznie przywrócić tę kopię zapasową w bazie danych lustrzanej przy użyciu opcji WITH NORECOVERY i WITH MOVE. Spowoduje to utworzenie określonej ścieżki pliku na serwerze dublowania i przywrócenie nowego pliku do tej lokalizacji.
Aby przygotować bazę danych do nowej sesji mirroringu, właściciel musi również przywrócić bez przywracania jakiekolwiek inne zaległe kopie zapasowe dziennika z serwera głównego.
Aby uzyskać więcej informacji, zobacz Usuwanie dublowania bazy danych (SQL Server),Przygotowanie dublowania bazy danych do dublowania (SQL Server), ustanowienie sesji dublowania bazy danych przy użyciu uwierzytelniania systemu Windows (Transact-SQL), używanie certyfikatów dla punktu końcowego dublowania bazy danych (Transact-SQL) lub ustanowienie sesji dublowania bazy danych przy użyciu uwierzytelniania systemu Windows (SQL Server Management Studio).
Uruchamianie dublowania przy użyciu Transact-SQL
Kolejność wydawania instrukcji ALTER DATABASE database_name SET PARTNER ='partner_server' jest bardzo ważna.
Pierwsza instrukcja musi być uruchamiana na serwerze lustrzanym. Po wydaniu tej instrukcji serwer dublowania nie próbuje skontaktować się z żadnym innym wystąpieniem serwera. Zamiast tego serwer lustrzany instruuje bazę danych, aby czekała na skontaktowanie się z serwerem lustrzanym przez serwer główny.
Druga instrukcja ALTER DATABASE musi być uruchomiona na serwerze głównym. Ta instrukcja powoduje, że główny serwer próbuje nawiązać połączenie z serwerem lustrzanym. Po utworzeniu tego połączenia mirror próbuje nawiązać połączenie z serwerem głównym przy użyciu innego połączenia.
Aby uzyskać więcej informacji, zobacz ALTER DATABASE (Transact-SQL).
Uwaga / Notatka
Aby uzyskać informacje na temat uruchamiania dublowania przy użyciu programu SQL Server Management Studio, zobacz Ustanawianie sesji dublowania bazy danych przy użyciu uwierzytelniania systemu Windows (SQL Server Management Studio).
Transakcje obejmujące wiele baz danych
Gdy baza danych jest poddana mirroringowi w trybie wysokiego bezpieczeństwa z automatycznym przełączeniem awaryjnym, automatyczne przełączenie awaryjne może prowadzić do automatycznego i prawdopodobnie nieprawidłowego rozwiązania transakcji nierozstrzygniętych. Jeśli w którejkolwiek z baz danych wystąpi automatyczne przełączenie awaryjne podczas zatwierdzania transakcji między bazami danych, mogą pojawić się niespójności logiczne między bazami danych.
Typy transakcji między bazami danych, których może dotyczyć automatyczne przejście w tryb failover, obejmują następujące elementy:
Transakcja, która aktualizuje wiele baz danych w tej samej instancji SQL Server.
Transakcje korzystające z koordynatora transakcji rozproszonych firmy Microsoft (MS DTC).
Aby uzyskać więcej informacji, zobacz transakcji między bazami danych i transakcji rozproszonych dla zawsze włączonych grup dostępności i dublowania baz danych (SQL Server).
Zobacz też
Konfigurowanie dublowania bazy danych (SQL Server)
Zabezpieczenia transportu dla dublowania baz danych i zawsze włączone grupy dostępności (SQL Server)