KB2648158 — POPRAWKA: Komunikat o błędzie "Nie można wykonać procesu" wyświetlany po ustawieniu wartości niezerowej w parametrze MaxCmdsInTran agenta czytnika dzienników w programie SQL Server 2008 R2 lub SQL Server 2012

Dotyczy
SQL Server 2008 R2 Service Pack 1

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”.