Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

SYS.DM_SQL_REPLICATION_SUBSCRIPTIONS

Termin Definicja
SYS.DM_SQL_REPLICATION_SUBSCRIPTIONS

sys.dm_sql_replication_subscriptions pokazuje informacje o subskrypcjach replikacji skonfigurowanych na instancji.

Rola sys.dm_sql_replication_subscriptions w SQL Server

sys.dm_sql_replication_subscriptions jest funkcją dynamicznego zarządzania w Microsoft SQL Server, która udostępnia informacje o subskrypcjach replikacji skonfigurowanych dla instancji. Replikacja SQL Server polega na kopiowaniu danych i zmian pomiędzy bazą publikującą a bazą subskrybenta zgodnie z konfiguracją publikacji, artykułów, agentów oraz subskrypcji. Funkcja pozwala odczytać stan zarejestrowanych relacji subskrypcji bez przeszukiwania wszystkich tabel systemowych ręcznie.

Wynik funkcji opisuje konfigurację widzianą z poziomu instancji, a nie zawartość replikowanych tabel. Pojedynczy wiersz odpowiada określonej subskrypcji rozpoznawanej przez SQL Server. Zwracane informacje mogą obejmować między innymi bazę i serwer publikujący, bazę subskrybenta, publikację, typ subskrypcji, sposób synchronizacji oraz status. Dokładny zakres dostępnych danych zależy od wersji SQL Server i rodzaju skonfigurowanej replikacji.

Odczyt informacji i interpretacja kolumn

Funkcję można wywołać w zapytaniu T-SQL, na przykład przez SELECT * FROM sys.dm_sql_repl..._subscriptions;, stosując pełną nazwę obiektu zgodną z dokumentacją danej wersji SQL Server. W praktyce lepiej wskazywać konkretne kolumny zamiast używać gwiazdki, ponieważ ułatwia to analizę wyniku i ogranicza zależność skryptu od zmian schematu zwracanych danych. Przy diagnostyce warto również filtrować wynik po nazwie publikacji, bazie subskrybenta albo identyfikatorze subskrypcji, jeżeli takie pole jest dostępne w używanej wersji silnika.

Kolumna opisująca status nie powinna być traktowana jako pełny dowód poprawności całego procesu kopiowania danych. Status odnosi się do stanu zarejestrowanego przez mechanizmy replikacji, natomiast rzeczywiste opóźnienie może zależeć od pracy agenta migawki, agenta dystrybucji, agenta scalania albo agenta odczytu dziennika, zależnie od modelu replikacji. Dlatego wynik funkcji należy porównywać z historią agentów, komunikatami w bazie dystrybucyjnej oraz informacjami o błędach generowanymi przez SQL Server Agent.

Powiązanie DMV z agentami replikacji

Sama obecność wiersza w sys.dm_sql_replication_subscriptions potwierdza, że SQL Server zna określoną subskrypcję, ale nie oznacza, że wszystkie zmiany są aktualnie dostarczane do celu. Możliwe jest istnienie poprawnej konfiguracji przy jednoczesnym zatrzymaniu agenta, błędzie połączenia, blokadzie transakcji, braku miejsca na dysku lub narastającym opóźnieniu. Z tego powodu analiza powinna obejmować zarówno parametry subskrypcji, jak i bieżące wykonywanie zadań replikacyjnych.

W przypadku replikacji transakcyjnej istotne jest sprawdzenie, czy zmiany są odczytywane z dziennika transakcji i przekazywane przez dystrybutora do subskrybenta. W replikacji scalającej należy dodatkowo uwzględnić synchronizację zmian po obu stronach oraz możliwość wystąpienia konfliktów. Funkcja sys.dm_sql_replication_subscriptions pomaga ustalić, jakie subskrypcje są przypisane do instancji, lecz nie zastępuje narzędzi monitorujących opóźnienie, historię pracy agentów i szczegóły błędów synchronizacji.

Przy tworzeniu raportu diagnostycznego należy zapisać moment wykonania zapytania, nazwę instancji, bazę kontekstu oraz wersję SQL Server. Dane z funkcji są stanem odczytanym w konkretnej chwili, dlatego pojedynczy wynik może nie ujawnić krótkotrwałego problemu. Porównanie kilku odczytów w czasie pozwala rozróżnić stabilną konfigurację od sytuacji, w której status subskrypcji zmienia się wskutek okresowych błędów połączenia lub przeciążenia agenta.

Znaczenie wyniku przy awarii synchronizacji

Gdy dane na subskrybencie nie są aktualne, pierwszym krokiem jest ustalenie, czy problem dotyczy konfiguracji subskrypcji, czy wykonania zadania replikacyjnego. Wynik sys.dm_sql_replication_subscriptions może wskazać nieprawidłową bazę docelową, nieoczekiwaną publikację, niezgodny typ subskrypcji albo status wymagający dalszego sprawdzenia. Następnie należy skontrolować logi odpowiedniego agenta, połączenia między instancjami, uprawnienia kont używanych przez agentów oraz dostępność baz uczestniczących w replikacji.

Nie należy usuwać ani ponownie tworzyć subskrypcji wyłącznie na podstawie pojedynczego wiersza zwróconego przez funkcję. Takie działanie może zmienić topologię replikacji i wymusić ponowną synchronizację danych. Bezpieczniejsza analiza polega na porównaniu konfiguracji z dokumentacją wdrożenia, sprawdzeniu komunikatów błędów oraz potwierdzeniu, czy problem można odtworzyć w kolejnych odczytach. W środowisku produkcyjnym każda zmiana publikacji, dystrybucji lub subskrypcji powinna być wykonana zgodnie z procedurą właściwą dla używanego modelu replikacji SQL Server.