Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Debezium:Không có LSN tối đa được ghi trong cơ sở dữ liệu; hãy đảm bảo rằng SQL Server Agent đang chạy

LSN là "mẩu" thông tin liên quan đến các thay đổi SQL Server của bạn. Nếu bạn không có LSN, có thể CDC của bạn không chạy hoặc không được định cấu hình đúng cách. Debezium sử dụng LSN để sao chép, do đó, Máy chủ SQL của bạn cần phải tạo điều này.

Một số cách tiếp cận:

  1. Bạn đã kiểm tra xem bảng của mình đã được bật CDC chưa? Thao tác này sẽ liệt kê các bảng của bạn đã bật CDC:
SELECT s.name AS Schema_Name, tb.name AS Table_Name
, tb.object_id, tb.type, tb.type_desc, tb.is_tracked_by_cdc
FROM sys.tables tb
INNER JOIN sys.schemas s on s.schema_id = tb.schema_id
WHERE tb.is_tracked_by_cdc = 1
  1. Cơ sở dữ liệu CDC của bạn đã được kích hoạt và hoạt động chưa? (xem tại đây )

Kiểm tra xem đã được bật chưa :

SELECT * 
FROM sys.change_tracking_databases 
WHERE database_id=DB_ID('MyDatabase')

Và kiểm tra xem có đang chạy không:

EXECUTE sys.sp_cdc_enable_db;  
GO  
  1. Dịch vụ CDC của bạn đang chạy trên SQL Server? Xem trong tài liệu
EXEC sys.sp_cdc_start_job;  
GO  
  1. Khi bật bảng trong CDC, tôi gặp một số vấn đề với tên vai trò. Đối với trường hợp của tôi, định cấu hình tại null đã giải quyết vấn đề của tôi (thêm chi tiết tại đây )
    EXEC sys.sp_cdc_enable_table
        @source_schema=N'dbo',
        @source_name=N'AD6010',
        @capture_instance=N'ZZZZ_AD6010',
        @role_name = NULL,
        @filegroup_name=N'CDC_DATA',
        @supports_net_changes=1
     GO


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm thứ tự nút trong tài liệu XML trong SQL Server

  2. Điều gì sai với phép tính phân chia truy vấn SQL Server này?

  3. Thêm mệnh đề WHERE vào SQL động / lập trình

  4. Cách so sánh datetime với chỉ ngày trong SQL Server

  5. PARSE () so với CAST () so với CONVERT () trong SQL Server:Sự khác biệt là gì?