Одновременное отслеживание изменений SQL Server и сбор данных об изменениях для таблицы

Я хотел бы добавить отслеживание изменений и сбор данных об изменениях в той же таблице для SQL Server 2017 (v14.0.3030.27). Когда я включил отслеживание изменений, это сработало, и когда я включил сбор данных об изменениях, все работало хорошо.

Но когда я включил оба одновременно в одной таблице, я не получаю значения отслеживания измененных данных. не мог видеть никакой документации, говорящей об этом.

Мой план состоит в том, чтобы извлечь изменения с помощью отслеживания изменений и получить подробную информацию из таблицы захвата данных об изменениях. Есть предположения?


person Abdul    schedule 03.10.2018    source источник
comment
CT и CDC служат разным целям. Используйте только один! Либо вам нужны все промежуточные изменения (CDC), либо нет (CT). Что он?   -  person Mitch Wheat    schedule 03.10.2018
comment
Я подозреваю, что вы первый человек, который когда-либо пытался включить оба... обычно это признак того, что ваш дизайн неверен!   -  person Mitch Wheat    schedule 03.10.2018
comment
@MitchWheat, возможно, вы правы, но моя цель - каждую минуту (если возможно, секунды) опрашивать небольшую таблицу, чтобы проверять любые изменения, произошедшие в конкретной таблице, и если это так, получить полные изменения из CDC. Если у вас есть другие предложения по дизайну, пожалуйста, дайте мне знать. Спасибо   -  person Abdul    schedule 03.10.2018
comment
используйте SqlDependency: docs.microsoft .com/en-us/dotnet/framework/data/adonet/sql/   -  person Mitch Wheat    schedule 03.10.2018
comment
@MitchWheat Спасибо за быстрый ответ, я проверю и отвечу.   -  person Abdul    schedule 03.10.2018
comment
@MitchWheat Я не использую приложение APS.Net, вызов исходит от стороннего приложения (Mirth Connect), которое доступно в той же среде SQL-сервера.   -  person Abdul    schedule 03.10.2018
comment
вам не нужно использовать ASP.NET   -  person Mitch Wheat    schedule 03.10.2018


Ответы (1)


Учитывая вашу дополнительную информацию «Но моя цель — опрашивать небольшую таблицу каждую минуту (если возможно, секунд)», я бы предложил использовать SqlDependency для получения уведомлений при изменении данных, а не для постоянного опроса.

SqlDependency идеально подходит для сценариев кэширования, когда вашему приложению ASP.NET или службе среднего уровня необходимо кэшировать определенную информацию в памяти. SqlDependency позволяет получать уведомления, когда исходные данные в базе данных изменяются, чтобы кэш можно было обновить.

Чтобы настроить зависимость, необходимо связать объект SqlDependency с одним или несколькими объектами SqlCommand. Для получения уведомлений необходимо подписаться на событие OnChange. Дополнительные сведения о требованиях к созданию запросов для уведомлений см. в разделе Работа с уведомлениями о запросах.

С оговоркой:

SqlDependency был разработан для использования в службах ASP.NET или среднего уровня, где имеется относительно небольшое количество серверов, имеющих активные зависимости от базы данных. Он не был разработан для использования в клиентских приложениях, где сотни или тысячи клиентских компьютеров должны иметь объекты SqlDependency, настроенные для одного сервера базы данных.

person Mitch Wheat    schedule 03.10.2018