Debezium: Максимальный номер LSN не зарегистрирован в базе данных; убедитесь, что агент SQL Server запущен

Этот вопрос связан с: Debezium Как правильно зарегистрировать коннектор SqlServer в Kafka Connect - в соединении отказано

В Windows 10 у меня Debezium работает на экземпляре Microsoft SQL Server, который находится вне контейнера Docker. Каждые 390 миллисекунд я получаю следующее предупреждение:

В базе данных не зарегистрирован максимальный номер LSN; убедитесь, что агент SQL Server запущен
[io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource]

Я проверил код Debezium на Github, и единственное место, где я могу найти это предупреждение, указывает в комментариях к коду, что это предупреждение должно выдаваться только в том случае, если агент не запущен. Я подтвердил, что агент SQL Server запущен.

Почему появляется это предупреждение и как его исправить?

Примечание.

Мое текущее решение, похоже, работает только в непроизводственной среде - согласно документации Docker.


person J Weezy    schedule 08.04.2020    source источник


Ответы (3)


LSN - это «фрагменты» информации, относящиеся к изменениям вашего SQL Server. Если у вас нет LSN, возможно, ваш CDC не работает или настроен неправильно. Debezium использует LSN для репликации, поэтому ваш SQL Server должен их сгенерировать.

Некоторые подходы:

  1. Вы проверили, включен ли в вашей таблице CDC? Это будет список ваших таблиц с включенным 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. Ваша база данных CDC включена и работает? (см. здесь)

Проверьте, включен ли :

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

И проверьте, работает ли:

EXECUTE sys.sp_cdc_enable_db;  
GO  
  1. Ваша служба CDC работает на SQL Server? См. в документации
EXEC sys.sp_cdc_start_job;  
GO  
  1. При включении таблицы в CDC у меня возникли проблемы с именем роли. В моем случае настройка на null решила мою проблему (подробнее здесь)
    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
person William Prigol Lopes    schedule 09.05.2020
comment
sys.change_tracking_databases предназначен для отслеживания изменений, что не то же самое, что и сбор данных об изменениях. Отслеживание изменений также не используется Debezium AFAIK. Остальная часть этого ответа по-прежнему кажется хорошей проверкой, когда видишь это предупреждение. - person Dude0001; 02.07.2021

Другая возможность этой ошибки (я только что столкнулся с этим предупреждением сегодня утром, пытаясь подключить новую БД), это учетная запись SQL не имеет необходимых разрешений. Debezium запускает следующий SQL. Убедитесь, что используемый вами логин SQL имеет доступ для запуска этой хранимой процедуры и возвращает таблицы, которые вы настроили в CDC. Если вы получили сообщение об ошибке или нулевые строки, обратитесь к администратору базы данных, чтобы настроить соответствующие разрешения.

EXEC sys.sp_cdc_help_change_data_capture

person Dude0001    schedule 02.07.2021

Добавление большего к ответу Уильяма.

В случае, если агент SQL Server не запущен

Вы можете включить его, выполнив следующие действия:

  1. Панель управления >
  2. Инструменты управления >
  3. Нажмите Services
  4. Найдите Агент SQL Server.
  5. Щелкните правой кнопкой мыши и запустите

Теперь вы можете запускать запросы заданий cdc в своем mssql.

PS: вам необходимо иметь доступ для входа на сервер Windows.

person Sanket9394    schedule 06.07.2021