Поделиться через


Часто задаваемые вопросы о потоковой передаче событий изменений (CES)

Применимо к: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed Instance

Ниже приведены ответы на вопросы о функции потоковой передачи событий изменений (CES) для SQL Server 2025 (17.x), Базы данных SQL Azure и Управляемого экземпляра SQL Azure.

Замечание

В настоящее время потоковая передача событий изменений доступна в предварительной версии для:

Совместимость и требования

Работает ли CES с базой данных SQL Azure?

Да. CES поддерживается в Базе данных SQL Azure, начиная с ноября 2025 г.

Требуется ли полная модель восстановления для CES?

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

Какова стоимость использования CES?

Для CES использование Центров событий Azure взимается по стандартным тарифам. Плата за входящий трафик и исходящий трафик также применяются.

Производительность и влияние

Каков ожидаемый эффект на производительность большой базы данных с миллионами строк при включении CES?

Влияние на производительность зависит от конкретной рабочей нагрузки и конфигурации. Тем не менее, ожидается, что CES будет иметь меньшие накладные расходы, чем фиксация изменений данных (CDC), поскольку данные не записываются обратно в базу данных.

Что такое максимальный размер сообщения, поддерживаемый CES?

Размер сообщения настраивается с учетом максимального размера 1 МБ и должен соответствовать ограничениям вашей инстанции Центров событий Azure.

Будет ли журнал транзакций продолжать расти, если CES не может доставлять события (например, из-за проблемы с местом назначения, истекших авторизационных учетных данных и т. д.)?

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

Обработка схем и данных

Как CES обрабатывает изменения схемы, например удаление столбца?

CES включает схему строк для каждого события. Если операция DDL изменяет таблицу (например, удаление, переименование или добавление столбца), следующее событие DML отражает обновленную схему. CES не генерирует события для самих операций DDL.

Поддерживаются ли таблицы с LOB-столбцами (например, varchar(max)) в CES?

Да. CES поддерживает таблицы со столбцами LOB. Для каждой таблицы, настроенной для потоковой передачи, можно настроить, включены ли большие объекты в потоковые события.

Нужен ли таблице первичный ключ для использования CES?

Нет. CES не требует наличия первичного ключа в таблице.

Насколько детализированные события CES?

Каждая строка, затронутая операцией INSERT, UPDATE или DELETE, передается в виде отдельного события.

Если транзакция изменяет несколько строк, они передаются как отдельные события или как один?

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

Интеграция и настройка

Как CES работает в конфигурации высокого уровня доступности? Можно ли использовать строку подключения DNN?

CES выполняет потоки только из первичной реплики. В случае переключения при отказе CES необходимо перенастроить на новом основном сервере. Вы можете подключиться к первичной реплике с помощью любого метода, поддерживаемого SQL Server, включая DNN.

Какие протоколы использует CES для связи с адресатом?

CES поддерживает протоколы AMQP и Kafka для Центров событий Azure. HTTPS не поддерживается.

Может ли CES напрямую транслировать данные в Kafka?

Нет. CES в настоящее время поддерживает только центры событий Azure (протокол AMQP и Kafka) в качестве назначения.

Поддерживает ли CES управляемое удостоверение Microsoft Entra для проверки подлинности с помощью Центров событий Azure?

Он зависит от источника данных. CES в Базе данных SQL Azure поддерживает управляемое удостоверение Microsoft Entra для проверки подлинности в Центрах событий Azure, где SQL Server 2025 в настоящее время не поддерживает Microsoft Entra для проверки подлинности.

Функциональность и характеристики

Можно ли включить CES в базе данных, которая уже использует репликацию транзакций?

Нет. CES нельзя включить в базе данных, настроенной с репликацией транзакций.

Может ли CES выполняться параллельно с записью изменений данных (CDC)?

Нет. CES нельзя включить в базе данных с поддержкой CDC.

Можно ли использовать CES с зеркальными базами данных Fabric для SQL Server?

Нет. CES не поддерживается с зеркальными базами данных Fabric для SQL Server.

Что произойдет, если CES отключен? Возобновляется ли это с того момента, на котором остановилось, после повторного включения?

Если CES отключен, его невозможно возобновить. Чтобы продолжить потоковую передачу событий, необходимо вручную перенастроить CES. Изменения данных, внесенные при отключении CES, не записываются. Передаются только изменения, внесенные после перезапуска CES. CES гарантирует по крайней мере одну доставку. Если CES не удается доставить сообщение, он продолжает пытаться, пока сообщение не будет успешно доставлено или пока CES не будет отключен. Если CES не отключен, сбой доставки предотвращает усечение журнала до тех пор, пока ошибка не будет устранена и сообщение не будет успешно доставлено. Если CES отключен, усечение журнала возобновляется, а события, возникающие во время простоя, не фиксируются.

Что произойдет, если выполнить восстановление (или другой тип миграции) базы данных, настроенной для CES?

После восстановления (или других типов миграции базы данных) CES отключается и останавливается для базы данных. Необходимо перенастроить его, чтобы начать потоковую передачу снова.

Может ли CES выполнять первоначальный снимок существующих данных в таблицах при активации CES?

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

Как я могу отслеживать активность CES (например, обработанные события, ошибки)?

Используйте следующие системные представления для мониторинга действий CES:

В SQL Server 2025 можно создать сеанс XEvent, связанный с CES, и получить дополнительные сведения о действиях CES и потенциальных ошибках.

  CREATE EVENT SESSION ChangeEventStreaming
  ON SERVER
  ADD EVENT sqlserver.synapse_link_error
  (
  )
  ADD TARGET package0.event_file 
  (SET filename=N'C:\temp\YourSession_Target1.xel');
  GO

При настройке мониторинга CES xEvent для Управляемого экземпляра SQL Azure сохраните файл .xel в контейнере хранилища объектов BLOB Azure. Сведения о трассировке потоковой передачи событий в Управляемом экземпляре SQL Azure можно просмотреть, наблюдая synapse_link_error за событиями:

CREATE CREDENTIAL
[your blob container URL here] --make suire to not leave / at the end
WITH IDENTITY = 'MANAGED IDENTITY';

DROP EVENT SESSION ChangeEventStreaming ON SERVER
CREATE EVENT SESSION ChangeEventStreaming
ON SERVER
ADD EVENT sqlserver.synapse_link_error
(
)
ADD TARGET package0.event_file
(
    SET filename = N'https://[your container URL]/cessession.xel'
  
);

Отладка xEvent не поддерживается для устранения неполадок CES в Базе данных SQL Azure.

Вы можете отслеживать центры событий Azure и использовать связанные метрики и журналы.

Существует ли ограничение на количество таблиц, которые можно настроить для потоковой передачи?

Да. CES поддерживает до 4 096 групп потоковой передачи с до 40 000 таблиц на группу.