Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
Szczegóły wiadomości
| Attribute | Wartość |
|---|---|
| Nazwa produktu | SQL Server |
| Identyfikator zdarzenia | 18752 |
| Źródło zdarzenia | MSSQLSERVER |
| Składnik | Silnik bazy danych SQL Server |
| Nazwa symboliczna | |
| Tekst wiadomości | Tylko jeden agent czytnika dzienników lub procedura związana z dziennikiem (sp_repldone, sp_replcmds i sp_replshowcmds) może łączyć się z bazą danych jednocześnie. Jeśli wykonano procedurę związaną z dziennikiem, usuń połączenie, za pomocą którego wykonano procedurę lub wykonaj sp_replflush przez to połączenie przed uruchomieniem agenta czytnika dzienników lub wykonując inną procedurę związaną z dziennikiem. |
Explanation
Więcej niż jedno bieżące połączenie próbuje wykonać jedno z następujących czynności: sp_repldone, sp_replcmds lub sp_replshowcmds. Procedury przechowywane sp_repldone (Transact-SQL ) i sp_replcmds (Transact-SQL ) to procedury przechowywane używane przez Agenta Log Reader do lokalizowania i aktualizacji informacji o zreplikowanych transakcjach w opublikowanej bazie danych. Procedura przechowywana sp_replshowcmds (Transact-SQL) służy do rozwiązywania pewnych problemów związanych z replikacją transakcyjną.
Błąd ten pojawia się w następujących okolicznościach:
Jeśli Agent Log Reader dla opublikowanej bazy danych jest uruchomiony, a drugi Agent Log Reader próbuje uruchomić tę samą bazę danych, błąd zostaje wywołany dla drugiego agenta i pojawia się w historii agenta.
W sytuacji, gdy wydaje się, że jest wielu agentów, możliwe jest, że jeden z nich jest wynikiem procesu osierocenia.
Jeśli Agent Log Reader dla opublikowanej bazy danych zostanie uruchomiony, a użytkownik wykona sp_repldone, sp_replcmds lub sp_replshowcmds na tej samej bazie, błąd jest zgłaszany w aplikacji, w której wykonano procedurę przechowywaną (np. sqlcmd).
Jeśli nie działa żaden Agent Log Reader dla opublikowanej bazy danych, a użytkownik wykona sp_repldone, sp_replcmds lub sp_replshowcmds i nie zamknie połączenia, przez które procedura została wykonana, błąd pojawia się, gdy Agent Log Reader próbuje połączyć się z bazą danych.
Akcja użytkownika
Poniższe kroki mogą pomóc Ci rozwiązać problem. Jeśli jakikolwiek krok pozwala Agentowi Log Reader rozpocząć działalność bez błędów, nie ma potrzeby kończyć pozostałych kroków.
Sprawdź historię agenta Log Reader pod kątem innych błędów, które mogłyby przyczyniać się do tego błędu. Aby uzyskać informacje o statusie agenta i szczegółach błędów w Monitorze replikacji, zobacz Przeglądaj informacje i Wykonuj zadania z Monitorem replikacji.
Sprawdź wyniki sp_who (Transact-SQL ) pod kątem konkretnych numerów identyfikacyjnych procesów (SPID) powiązanych z opublikowaną bazą danych. Zamknij wszystkie połączenia, które mogły działać sp_repldone, sp_replcmds lub sp_replshowcmds.
Zrestartuj agenta czytnika logów. Więcej informacji można znaleźć w artykule Start and Stop a Replication Agent (SQL Server Management Studio).
Zrestartuj usługę SQL Server Agent (przenieś ją offline lub online w klastrze) na Dystrybutorze. Jeśli istnieje możliwość, że zaplanowane zadanie mogło wykonać sp_repldone, sp_replcmds lub sp_replshowcmds z dowolnej innej instancji SQL Server, zrestartuj także agenta SQL Server dla tych instancji. Więcej informacji można znaleźć w sekcji Start, Stop lub Pause the SQL Server Agent Service.
Wykonaj sp_replflush (Transact-SQL) w wydawcy bazy publikacji, a następnie ponownie uruchom Agent Log Reader.
Jeśli błąd będzie się powtarzał, zwiększ rejestrowanie agenta i określ plik wyjściowy dla tego logu. W zależności od kontekstu błędu, może to być przejście do niego i/lub dodatkowe komunikaty o błędzie.