KB2648158 - KHẮC PHỤC: Thông báo lỗi "Quy trình không thể thực thi" khi bạn đặt giá trị khác 0 trong tham số MaxCmdsInTran của Tác nhân Trình đọc Nhật ký trong SQL Server 2008 R2 hoặc SQL Server 2012

Áp dụng cho
SQL Server 2008 R2 Service Pack 1

Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 R2 Gói dịch vụ 1 (SP1) hoặc Microsoft SQL Server 2012 trong một tệp có thể tải xuống. Vì các bản sửa lỗi được tích lũy, mỗi bản phát hành mới đều chứa tất cả các bản hotfix và tất cả các bản cập nhật bảo mật đã được tích hợp trong bản phát hành cập nhật SQL Server 2008 R2 Gói dịch vụ 1 (SP1) hoặc Microsoft SQL Server 2012 trước đó.

Triệu chứng

Hãy cân nhắc các trường hợp sau:

  • Bạn tạo ít nhất hai ấn phẩm nhân bản giao dịch dựa trên một cơ sở dữ liệu trong Microsoft SQL Server 2008 R2 hoặc Microsoft SQL Server 2012.
  • Mỗi ấn phẩm có ít nhất một bài viết. Các bài viết không chờm lấp và mỗi bài viết chỉ thuộc về một ấn phẩm.
  • Bạn đặt thuộc @sync\_method tính của các ấn phẩm thành Đồng thời.
  • Bạn đặt @immediate\_sync thuộc tính của ấn phẩm là True.
  • Bạn đặt tham số MaxCmdsInTran của Tác nhân Trình đọc nhật ký thành giá trị khác không.
  • Một trong các ấn phẩm nhận được nhiều nội dung chèn trong một giao dịch.
  • Sau khi giao dịch được cam kết, Tác nhân Trình đọc Nhật ký bắt đầu xử lý và chia tách giao dịch theo tham số MaxCmdsInTran.
  • Tác nhân Ảnh chụp nhanh trên một ấn phẩm khác sẽ khởi động trước khi Tác nhân Trình đọc Nhật ký kết thúc tác vụ.

Trong kịch bản này, Tác nhân Trình đọc Nhật ký bị lỗi và bạn nhận được thông báo lỗi sau:

Lưu ý

Quy trình này không thể thực hiện 'sp_MSadd_replcmds' trên 'máy chủ\instance'.
(Nguồn: MSSQLServer, Số lỗi: 1007)
Không thể chèn hàng khóa trùng lặp trong đối tượng 'dbo. MSrepl_commands' với chỉ mục duy nhất 'ucMSrepl_commands'.
(Nguồn: MSSQLServer, Số lỗi: 1007)

Giải pháp

Thông tin cập nhật tích lũy

SQL Server 2012

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật Tích lũy 1 cho SQL Server 2012. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

2679368 Gói cập nhật tích lũy 1 cho SQL Server 2012Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2012 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:

2692828 Các bản dựng SQL Server 2012 được phát hành sau khi SQL Server 2012 được phát hành Bạn phải áp dụng hotfix SQL Server 2012 cho bản cài đặt SQL Server 2012.

Gói cập nhật tích lũy 4 cho SQL Server 2008 R2 SP1

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Cập nhật Tích lũy 4. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này cho SQL Server 2008 R2 SP1, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở kiến thức Microsoft:

2633146 Gói cập nhật tích lũy 4 cho SQL Server 2008 R2 SP1Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành sửa lỗi SQL Server 2008 R2 SP1 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:

2567616 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 SP1 được phát hành

Giải pháp thay thế

Để khắc phục sự cố này, hãy sử dụng một trong các phương pháp sau:

  • Không đặt thuộc @sync\_method tính của các ấn phẩm thành "đồng thời" và không đặt thuộc @immediate\_sync tính của các ấn phẩm thành "đúng".
  • Đặt giá trị của tham số MaxCmdsInTran về 0.

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".