Firma Microsoft dystrybuuje poprawki dla programu Microsoft SQL Server 2008 R2 z dodatkiem Service Pack 1 (SP1) lub Microsoft SQL Server 2012 w jednym pliku do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i aktualizacje zabezpieczeń zawarte w poprzedniej wersji programu SQL Server 2008 R2 z dodatkiem Service Pack 1 (SP1) lub aktualizacją programu Microsoft SQL Server 2012.
Objawy
Rozważmy następujący scenariusz:
- Na podstawie jednej bazy danych w programie Microsoft SQL Server 2008 R2 lub Microsoft SQL Server 2012 są tworzone co najmniej dwie publikacje replikacji transakcyjnej.
- Każda publikacja zawiera co najmniej jeden artykuł. Artykuły nie nakładają się na siebie, a każdy artykuł należy do tylko jednej publikacji.
- Właściwość publikacji ustawia @sync\_method się na wartość Współbieżne.
- Właściwość publikacji ustawia @immediate\_sync się na wartość Prawda.
- Parametr MaxCmdsInTran agenta czytnika dzienników jest ustawiany na wartość niezerową.
- Jedna z publikacji otrzymuje wiele wkładek w jednej transakcji.
- Po zatwierdzeniu transakcji agent czytnika dzienników rozpoczyna przetwarzanie i dzieli transakcję zgodnie z parametrem MaxCmdsInTran .
- Agent migawek w innej publikacji rozpoczyna się przed zakończeniem zadania przez agenta czytnika dzienników.
W tym scenariuszu działanie agenta czytnika dzienników kończy się niepowodzeniem i jest wyświetlany następujący komunikat o błędzie:
Uwaga
Proces nie mógł wykonać "sp_MSadd_replcmds" na "serwer\wystąpienie".
(Źródło: MSSQLServer, numer błędu: 1007)
Nie można wstawić zduplikowanego wiersza klucza w obiekcie 'dbo. MSrepl_commands" z unikalnym indeksem "ucMSrepl_commands".
(Źródło: MSSQLServer, numer błędu: 1007)
Rozwiązanie
Informacje o aktualizacji zbiorczej
SQL Server 2012
Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 1 dla programu SQL Server 2012. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2679368 Pakiet aktualizacji zbiorczej 1 dla SQL Server 2012Uwaga Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2012. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2692828 Kompilacje SQL Server 2012 wydane po wydaniu SQL Server 2012 Poprawkę SQL Server 2012 należy zastosować do instalacji programu SQL Server 2012.
Pakiet aktualizacji zbiorczej 4 dla programu SQL Server 2008 R2 z dodatkiem SP1
Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 4. Aby uzyskać więcej informacji dotyczących sposobu uzyskania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2 z dodatkiem SP1, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2633146 Pakiet aktualizacji zbiorczej 4 dla dodatku SP1 SQL Server 2008 R2 Uwaga Ponieważ kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla SQL Server 2008 R2 z dodatkiem SP1. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2567616 Kompilacje SQL Server 2008 R2 wydane po wydaniu SQL Server 2008 R2 z dodatkiem SP1
Obejście
Aby obejść ten problem, użyj jednej z następujących metod:
- Nie @sync\_method ustawiaj właściwości publikacji na "współbieżne" ani nie ustawiaj @immediate\_sync właściwości publikacji na wartość "prawda".
- Ustaw wartość parametru MaxCmdsInTran na zero.
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.