Dotyczy: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w Microsoft Fabric
Poniżej znajdują się odpowiedzi na pytania dotyczące funkcji change event streaming (CES) dla SQL Server 2025 (17.x), Azure SQL Database, Azure SQL Managed Instance oraz bazy danych SQL w Microsoft Fabric.
Uwaga / Notatka
Stream wydarzeń zmian jest obecnie w trybie podglądowym i różni się w obsłudze produktów. W trakcie korzystania z wersji zapoznawczej ta funkcja może ulec zmianie.
Zgodność i wymagania
Czy program CES współpracuje z usługą Azure SQL Database?
Tak. Usługa CES jest obsługiwana w usłudze Azure SQL Database od listopada 2025 r.
Czy pełny model odzyskiwania jest wymagany dla programu CES?
Tak. Program CES opiera się na odczytywaniu dziennika transakcji, dlatego baza danych programu SQL Server musi być skonfigurowana przy użyciu pełnego modelu odzyskiwania.
Jaki jest koszt korzystania z usług CES?
Na CES korzystanie z Azure Event Hubs i Fabric Eventstream jest rozliczane według standardowych stawek. Obowiązują również opłaty za ruch przychodzący i wychodzący.
Wydajność i wpływ
Jaki jest oczekiwany wpływ na wydajność dużej bazy danych z milionami wierszy po włączeniu programu CES?
Wpływ na wydajność zależy od konkretnego obciążenia i konfiguracji. Oczekuje się jednak, że usługa CES będzie miała mniejsze obciążenie niż przechwytywanie danych zmian (CDC), ponieważ nie ma danych zapisywanych z powrotem do bazy danych.
Jaki jest maksymalny rozmiar komunikatu obsługiwany przez program CES?
CES wykorzystuje @max_message_size_kb to ustawienie do dzielenia dużych zdarzeń wychodzących na fragmenty wiadomości, które pasują do docelowych limitów Azure Event Hubs lub skonfigurowanej przepustowości Fabric Eventstream. To ustawienie kontroluje tylko rozdzielanie komunikatów. Nie zmienia to limitu obcinania na kolumnę: przed utworzeniem przez CES zdarzenia wychodzącego każda strumieniowana wartość kolumny większa niż 1 MB jest obcinana do 1 MB.
Czy dziennik transakcji będzie nadal się powiększał, jeśli CES nie może dostarczyć wydarzeń (na przykład z powodu problemu z miejscem docelowym, wygaśnięcia poświadczeń autoryzacyjnych itp.)?
Tak. Usługa CES zapewnia niezawodne dostarczanie wiadomości ("co najmniej raz"), więc dziennik transakcji nie zostanie obcięty do momentu, gdy zdarzenia zostaną pomyślnie dostarczone. Jeśli proces dostarczania się nie powiedzie, dziennik będzie rosnąć do momentu rozwiązania problemu. Ważne jest, aby zachować kondycję programu CES przez monitorowanie dostarczania komunikatów, błędów i wykorzystania dziennika transakcji dla baz danych z włączonym usługą CES.
Obsługa schematu i danych
Jak usługa CES obsługuje zmiany schematu, takie jak usuwanie kolumny?
Moduł CES zawiera schemat wierszy z każdym zdarzeniem. Jeśli operacja DDL modyfikuje tabelę (na przykład usuwanie, zmienianie nazwy lub dodawanie kolumny), następne zdarzenie DML odzwierciedla zaktualizowany schemat. Program CES nie emituje zdarzeń dotyczących operacji DDL jako takich.
Czy tabele z kolumnami LOB (na przykład varchar(max)) są obsługiwane przez usługę CES?
Tak. CES obsługuje tabele z kolumnami LOB. Dla każdej tabeli skonfigurowanej do streamingu możesz kontrolować, czy stary wiersz zawiera wartości kolumn LOB, używając sys.sp_add_object_to_event_stream_group. Każda wartość LOB przesyłana strumieniowo nadal podlega limitowi obcinania 1 MB dla każdej kolumny. Skonfiguruj opcję konfiguracji serwera max text repl size, aby umożliwić zapisywanie ponad 65 536 bajtów w kolumnach LOB, gdy włączono CES.
Co się stanie, jeśli wartość kolumny streamowanej jest większa niż 1 MB?
Jeśli jedna lub więcej przesyłanych strumieniowo wartości kolumn jest większa niż 1 MB, CES obcina każdą taką wartość kolumny do 1 MB, zanim utworzy zdarzenie wyjściowe. Limit dotyczy każdej kolumny osobno. Na przykład, jeśli wiersz ma pięć kolumn, a pierwsze trzy wartości są większe niż 1 MB, CES skraca każdą z tych trzech wartości do 1 MB, tworzy zdarzenie wychodzące, dzieli zdarzenie na fragmenty wiadomości zgodnie z , @max_message_size_kbi wysyła każdą część do miejsca docelowego.
Obcinanie danych w kolumnie jest bezwarunkowe. CES nie rejestruje błędów ani ostrzeżeń, gdy następuje takie obcięcie. Skonfiguruj opcję konfiguracji serwera max text repl size, aby umożliwić zapisywanie ponad 65 536 bajtów w kolumnach LOB, gdy włączono CES.
Czy tabela wymaga klucza podstawowego do korzystania z programu CES?
Nie. Program CES nie wymaga klucza podstawowego w tabeli.
Jak szczegółowe są wydarzenia CES?
Każdy wiersz, na który wpływa operacja INSERT, UPDATE lub DELETE, jest przesyłany strumieniowo jako oddzielne zdarzenie.
Jeśli transakcja modyfikuje wiele wierszy, czy są one przekazywane jako oddzielne operacje, czy jako jedna transakcja?
Każdy wiersz, którego dotyczy problem, jest przesyłany strumieniowo jako oddzielne zdarzenie. Każde zdarzenie zawiera metadane transakcji, więc zmiany z tej samej transakcji mogą być logicznie zgrupowane w miejscu docelowym.
Integracja i konfiguracja
Jak działa program CES w konfiguracji wysokiej dostępności? Czy mogę użyć łańcucha połączeniowego DNN?
CES strumieniuje tylko z repliki podstawowej. W przypadku przejścia w tryb failover należy ponownie skonfigurować usługę CES na nowym serwerze podstawowym. Możesz połączyć się z główną repliką za pomocą dowolnej metody obsługiwanej przez SQL Server, w tym przez rozproszoną nazwę sieci (DNN).
Które protokoły są używane przez usługę CES do komunikowania się z miejscem docelowym?
CES obsługuje protokoły Kafka i AMQP dla Azure Event Hubs oraz Fabric Eventstream. Protokół HTTPS nie jest obsługiwany. Od 15 sierpnia 2026 roku protokół AMQP został wycofany dla nowych grup strumieniowych w Azure SQL Database oraz bazie SQL w Microsoft Fabric. Na tych platformach wszystkie nowo utworzone grupy strumieni muszą używać AzureEventHubs jako .destination_type Ten typ docelowy wykorzystuje protokół Kafki. Azure SQL Managed Instance i SQL Server 2025 nadal akceptują AzureEventHubsApacheKafka i AzureEventHubsAMQP do przyszłej aktualizacji. Szczegóły można znaleźć w artykule o wycofaniu protokołu AMQP. Jeśli używasz protokołu AMQP na istniejących grupach strumieni, ustaw opcję konfiguracji minimalnej wersji TLS w Azure Event Hubs na 1.2. CES nie działa z TLS 1.3 w oparciu o protokół AMQP.
Czy usługa CES może przesyłać strumieniowo bezpośrednio do platformy Kafka?
Nie. Usługa CES obecnie obsługuje jako miejsce docelowe tylko Azure Event Hubs (protokół AMQP i Kafka).
Czy CES może streamować do Fabric Eventstream?
Tak. Możesz połączyć CES z Fabric Eventstream, korzystając z niestandardowego endpointu wejściowego kompatybilnego z Azure Event Hubs, który zapewnia eventstream. Konfiguruj CES z eventstream parametry połączenia tak, jak konfigurujesz go dla Azure Event Hubs.
Czy CES obsługuje zarządzaną tożsamość Microsoft Entra do uwierzytelniania z użyciem Azure Event Hubs i Fabric Eventstream?
Tak. CES obsługuje uwierzytelnianie Microsoft Entra w Azure SQL Database oraz Azure SQL Managed Instance. Dla SQL Server 2025 obsługiwane jest uwierzytelnianie Microsoft Entra, zaczynając od Cumulative Update 3 (CU3) dla instancji włączonych przez Azure Arc lub działających na maszynie wirtualnej Azure. Uwierzytelnianie Microsoft Entra nie jest obecnie obsługiwane w bazie danych SQL w Microsoft Fabric.
Funkcjonalność i cechy
Czy usługę CES można włączyć w bazie danych, która już korzysta z replikacji transakcyjnej?
Nie. Nie można włączyć programu CES w bazie danych skonfigurowanej przy użyciu replikacji transakcyjnej.
Czy CES może działać wraz z przechwytywaniem zmian danych (CDC)?
Nie. Nie można włączyć funkcji CES w bazie danych, która ma włączoną usługę CDC.
Czy CES można używać z lustrzanymi bazami danych Fabric dla SQL Server?
Nie. Program CES nie jest obsługiwany w przypadku Fabric Mirrored Databases dla SQL Server.
Co się stanie, jeśli usługa CES jest wyłączona? Czy zostanie wznowione od miejsca, w którym zostało przerwane, gdy ponownie zostanie włączone?
Jeśli program CES jest wyłączony, nie można go wznowić. Aby kontynuować przesyłanie strumieniowe zdarzeń, należy ręcznie ponownie skonfigurować usługę CES. Zmiany danych wprowadzone podczas wyłączania ces nie są przechwytywane. Przesyłane są tylko zmiany wprowadzone po ponownym uruchomieniu usługi CES. CES gwarantuje co najmniej raz dostawę. Jeśli program CES nie dostarczy komunikatu, będzie nadal ponawiać próbę do momentu pomyślnego dostarczenia komunikatu lub wyłączenia programu CES. Jeśli usługa CES nie jest wyłączona, dostawy zakończone niepowodzeniem uniemożliwiają obcięcie dziennika do momentu usunięcia warunku błędu i komunikat zostanie pomyślnie dostarczony. Jeśli program CES jest wyłączony, wznawia obcinanie dzienników i zdarzenia występujące podczas przestoju nie są przechwytywane.
Co się stanie, jeśli wykonam przywracanie (lub inny typ migracji) bazy danych skonfigurowanej dla programu CES?
Po przywróceniu (lub innych typach migracji bazy danych) CES zostaje wyłączony i zatrzymany dla bazy danych. Musisz ponownie skonfigurować go, aby ponownie rozpocząć przesyłanie strumieniowe.
Czy program CES może wykonać początkową migawkę ("seed") istniejących danych w tabelach po włączeniu programu CES?
Nie. Obecnie usługa CES przesyła strumieniowo tylko zmiany danych, które mają miejsce po włączeniu usługi CES. Nie przesyła strumieniowo danych w tabeli, która istnieje przed włączeniem usług CES.
Jak mogę monitorować aktywność CES (na przykład przetworzone zdarzenia, błędy)?
Aby monitorować aktywność ces, użyj następujących widoków systemowych:
- sys.dm_change_feed_errors w przypadku błędów dostarczania zdarzeń.
- sys.dm_change_feed_log_scan_sessions na potrzeby działania skanowania dzienników.
W SQL Server 2025 możesz utworzyć sesję xEvent związaną z CES i uzyskać więcej informacji o aktywności CES oraz potencjalnych błędach.
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
Podczas konfiguracji monitorowania CES xEvent dla usługi Azure SQL Managed Instance zapisz plik .xel w kontenerze usługi Azure Blob Storage. Możesz obserwować zmianę informacji o trasie strumienia zdarzeń w Azure SQL Managed Instance, obserwując synapse_link_error zdarzenia:
CREATE CREDENTIAL
[your blob container URL here] --make sure 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'
);
Debugowanie xEvent nie jest obsługiwane w przypadku rozwiązywania problemów z usługą CES w usłudze Azure SQL Database.
Możesz monitorować Azure Event Hubs lub Fabric Eventstream i korzystać z powiązanych metryk oraz logów.
Jak długo błędy CES są przechowywane w sys.dm_change_feed_errors?
Lista błędów sys.dm_change_feed_errors automatycznie się obraca. Nowsze błędy wypychają wcześniejsze wpisy. Błędy, które przestają się pojawiać, nie są natychmiast usuwane z listy; pozostają one aż do momentu, gdy nowe błędy je wypchną lub lista całkowicie się nie wyczyści.
Czy istnieje limit liczby tabel, które można skonfigurować do przesyłania strumieniowego?
Tak. CES obsługuje do 4 096 grup strumieni, przy czym każda grupa może zawierać do 40 000 tabel.