Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
In diesem Artikel wird beschrieben, wie Sie das feature change event streaming (CES) konfigurieren, das in SQL Server 2025 (17.x) und Azure SQL-Datenbank eingeführt wurde.
Hinweis
Derzeit ist das Change-Event-Streaming in der Vorschau für:
- SQL Server 2025 (Vorschaufunktionsdatenbank erfordert konfigurationsspezifische Einstellung).
- Azure SQL-Datenbank (Vorschaufunktion, Bereichskonfiguration nicht erforderlich).
Während der Vorschau kann dieses Feature geändert werden. Informationen zur aktuellen Unterstützung finden Sie unter "Einschränkungen".
Überblick
Führen Sie die folgenden Schritte aus, um Änderungsereignis-Streaming zu konfigurieren und zu verwenden:
- Verwenden Sie einen vorhandenen oder erstellen Sie eine neue Azure Event Hubs-Namespace - und Event Hubs-Instanz. Die Event Hubs-Instanz empfängt Ereignisse.
- Aktivieren Sie das Streaming von Änderungsereignissen für eine Benutzerdatenbank.
- Erstellen Sie eine Ereignisdatenstromgruppe. Konfigurieren Sie mit dieser Gruppe das Ziel, die Anmeldeinformationen, die Größenbeschränkungen für Nachrichten und das Partitionierungsschema.
- Fügen Sie der Ereignisdatenstromgruppe eine oder mehrere Tabellen hinzu.
Jeder Schritt wird in den folgenden Abschnitten dieses Artikels ausführlich beschrieben.
Voraussetzungen
Zum Konfigurieren des Änderungsereignisstreamings benötigen Sie die folgenden Ressourcen, Berechtigungen und Konfigurationen:
- Azure Event Hubs-Namespace
- Azure Event Hubs-Instanz
- Hostname von Azure Event Hubs
- Eine Anmeldung mit der Rolle db_owner oder die über die Berechtigung CONTROL DATABASE für die Datenbank verfügt, in der Sie CES aktivieren möchten.
- Aktivieren Sie für SQL Server 2025 (17.x) die Datenbankbereichskonfiguration für die Vorschaufunktion. Für die Azure SQL-Datenbank ist diese Konfiguration nicht erforderlich.
- Für die Azure SQL-Datenbank, die für den Einsatz ausgehender Firewall-Regeln oder eines Netzwerksicherheitsperimeters konfiguriert ist, ermöglichen Sie den Zugriff auf die Ziel-Azure Event Hubs.
Konfigurieren von Azure Event Hubs
Um zu erfahren, wie man Azure Event Hubs erstellt, lesen Sie Erstellen eines Event Hubs mithilfe des Azure-Portals.
Zugriffssteuerung für Azure Event Hubs
Konfigurieren Sie die Zugriffssteuerung für Ihre SQL-Ressource in Azure Event Hubs. Die Microsoft Entra-Authentifizierung ist die sicherste Methode, wird derzeit aber nur von azure SQL-Datenbank für CES unterstützt. Während die Verwendung einer Richtlinie für den freigegebenen Zugriff sowohl von der Azure SQL-Datenbank als auch von SQL Server 2025 unterstützt wird, sollten Sie sie nur in der Azure SQL-Datenbank verwenden, wenn die Microsoft Entra-Authentifizierung keine Option ist.
Richtlinien für den freigegebenen Zugriff bieten Authentifizierung und Autorisierung für Azure Event Hubs. Jede Richtlinie für den freigegebenen Zugriff benötigt einen Namen, eine Zugriffsstufe (Manage, Sendoder Listen) und eine Ressourcenbindung (Event Hubs-Namespace oder eine bestimmte Event Hub-Instanz). Richtlinien auf Instanzebene bieten mehr Sicherheit, indem sie dem Prinzip der geringsten Berechtigungen folgen. Sowohl SQL Server 2025 als auch Azure SQL-Datenbank unterstützen diese Methode. Verwenden Sie jedoch nach Möglichkeit die Microsoft Entra-Authentifizierung mit Azure SQL-Datenbank, da sie eine bessere Sicherheit bietet.
Wenn Sie eine Richtlinie für den freigegebenen Zugriff für die Authentifizierung und Autorisierung verwenden, müssen Clients, die Daten an einen Azure Event Hub senden, den Namen der Richtlinie angeben, die sie verwenden möchten, zusammen mit einem SAS-Token , das aus der Richtlinie oder dem Dienstschlüssel der Richtlinie generiert wurde.
SAS-Token haben einen Sicherheitsvorteil gegenüber Dienstschlüsseln: Wenn der Client kompromittiert ist, ist das SAS-Token nur gültig, bis es abläuft, und der kompromittierte Client kann keine neuen SAS-Token erstellen. Im Gegensatz dazu laufen Dienstschlüssel nicht automatisch ab. Ein kompromittierter Client mit einem Dienstschlüssel kann neue SAS-Token mithilfe des Schlüssels generieren.
Zum Konfigurieren des Streamings mit Azure Event Hubs mit dem AMQP-Protokoll (dem standardmäßigen nativen Azure Event Hubs-Protokoll), erstellen oder verwenden Sie eine freigegebene Zugriffsrichtlinie mit "Senden "-Berechtigung und generieren ein SAS-Token. Sie können das Token programmgesteuert mit jeder Programmier- oder Skriptsprache generieren. Das Beispiel in diesem Artikel zeigt, wie Sie ein SAS-Token aus einer neuen oder vorhandenen Richtlinie mithilfe eines PowerShell-Skripts generieren.
Hinweis
Für eine verbesserte Sicherheit wird die Verwendung der microsoft Entra-basierten Zugriffssteuerung nach Möglichkeit dringend empfohlen. Wenn die Microsoft Entra-basierte Zugriffssteuerung nicht möglich ist und Sie freigegebene Zugriffsrichtlinien verwenden, verwenden Sie die SAS-Tokenauthentifizierung anstelle der diensteschlüsselbasierten Authentifizierung, wenn möglich. Bewährte Methoden für SAS-Token umfassen das Definieren eines geeigneten minimal erforderlichen Zugriffsbereichs, das Festlegen eines kurzen Ablaufdatums und das regelmäßige Drehen des SAS-Schlüssels. Bei der schlüsselbasierten Authentifizierung drehen Sie die Schlüssel regelmäßig. Speichern Sie alle geheimen Schlüssel sicher mithilfe von Azure Key Vault oder einem ähnlichen Dienst.
Installieren der erforderlichen Module
Zum Verwalten von Azure Event Hubs-Ressourcen mit PowerShell-Skripts benötigen Sie die folgenden Module:
- Az PowerShell-Modul
- Az.EventHub PowerShell-Modul
Das folgende Skript installiert die erforderlichen Module:
Install-Module -Name Az -AllowClobber -Scope CurrentUser -Repository PSGallery -Force
Install-Module -Name Az.EventHub -Scope CurrentUser -Force
Wenn Sie bereits über die erforderlichen Module verfügen und diese auf die neueste Version aktualisieren möchten, führen Sie das folgende Skript aus:
Update-Module -Name Az -Force
Update-Module -Name Az.EventHub -Force
Herstellen einer Verbindung mit Azure
Sie können Entweder Azure Cloud Shell verwenden oder sich anmelden und Ihren Abonnementkontext festlegen.
Um Azure Cloud Shell zu nutzen, sehen Sie sich bitte die Anmeldung bei Azure an.
Definieren einer Richtlinie
Zum Erstellen des SAS-Tokens benötigen Sie eine Richtlinie mit Senderechten . Sie haben folgende Möglichkeiten:
Erstellen einer neuen Richtlinie
Oder
Verwenden einer vorhandenen Richtlinie
Hinweis
Die Richtlinie muss über Senderechte verfügen.
Erstellen eines SAS-Tokens für eine neue oder vorhandene Richtlinie
Wenn Sie eine neue Richtlinie erstellen, stellen Sie sicher, dass sie über das "Senden" verfügt. Wenn Sie eine vorhandene Richtlinie verwenden, überprüfen Sie, ob sie das Recht "Senden" besitzt.
Das folgende Skript erstellt eine neue Richtlinie oder ruft eine vorhandene Richtlinie ab, generiert dann ein vollständiges SAS-Token in einem HTTP-Autorisierungsheaderformat.
Ersetzen Sie Werte in spitzen Klammern (<value>) durch Werte für Ihre Umgebung.
function Generate-SasToken {
$subscriptionId = "<Azure-Subscription-ID>"
$resourceGroupName = "<Resource-group-name>"
$namespaceName = "<Azure-Event-Hub-Namespace-name>"
$eventHubName = "<Azure-Event-Hubs-instance-name>"
$policyName = "<Policy-name>"
$tokenExpireInDays = "<number-of-days-token-will-be-valid>"
# Modifying the rest of the script is not necessary.
# Login to Azure and set Azure Subscription.
Connect-AzAccount
# Get current context and check subscription
$currentContext = Get-AzContext
if ($currentContext.Subscription.Id -ne $subscriptionId) {
Write-Host "Current subscription is $($currentContext.Subscription.Id), switching to $subscriptionId..."
Set-AzContext -SubscriptionId $subscriptionId | Out-Null
} else {
Write-Host "Already using subscription $subscriptionId."
}
# Try to get the authorization policy (it should have Send rights)
$rights = @("Send")
$policy = Get-AzEventHubAuthorizationRule -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -EventHubName $eventHubName -AuthorizationRuleName $policyName -ErrorAction SilentlyContinue
# If the policy does not exist, create it
if (-not $policy) {
Write-Output "Policy '$policyName' does not exist. Creating it now..."
# Create a new policy with the Manage, Send and Listen rights
$policy = New-AzEventHubAuthorizationRule -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -EventHubName $eventHubName -AuthorizationRuleName $policyName -Rights $rights
if (-not $policy) {
throw "Error. Policy was not created."
}
Write-Output "Policy '$policyName' created successfully."
} else {
Write-Output "Policy '$policyName' already exists."
}
if ("Send" -in $policy.Rights) {
Write-Host "Authorization rule has required right: Send."
} else {
throw "Authorization rule is missing Send right."
}
$keys = Get-AzEventHubKey -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -EventHubName $eventHubName -AuthorizationRuleName $policyName
if (-not $keys) {
throw "Could not obtain Azure Event Hub Key. Script failed and will end now."
}
if (-not $keys.PrimaryKey) {
throw "Could not obtain Primary Key. Script failed and will end now."
}
# Get the Primary Key of the Shared Access Policy
$primaryKey = ($keys.PrimaryKey)
Write-Host $primaryKey
## Check that the primary key is not empty.
# Define a function to create a SAS token (similar to the C# code provided)
function Create-SasToken {
param (
[string]$resourceUri, [string]$keyName, [string]$key
)
$sinceEpoch = [datetime]::UtcNow - [datetime]"1970-01-01"
$expiry = [int]$sinceEpoch.TotalSeconds + ((60 * 60 * 24) * [int]$tokenExpireInDays) # seconds since Unix epoch
$stringToSign = [System.Web.HttpUtility]::UrlEncode($resourceUri) + "`n" + $expiry
$hmac = New-Object System.Security.Cryptography.HMACSHA256
$hmac.Key = [Text.Encoding]::UTF8.GetBytes($key)
$signature = [Convert]::ToBase64String($hmac.ComputeHash([Text.Encoding]::UTF8.GetBytes($stringToSign)))
$sasToken = "SharedAccessSignature sr=$([System.Web.HttpUtility]::UrlEncode($resourceUri))&sig=$([System.Web.HttpUtility]::UrlEncode($signature))&se=$expiry&skn=$keyName"
return $sasToken
}
# Construct the resource URI for the SAS token
$resourceUri = "https://$namespaceName.servicebus.windows.net/$eventHubName"
# Generate the SAS token using the primary key from the new policy
$sasToken = Create-SasToken -resourceUri $resourceUri -keyName $policyName -key $primaryKey
# Output the SAS token
Write-Output @"
-- Generated SAS Token --
$sasToken
-- End of generated SAS Token --
"@
}
Generate-SasToken
Die Ausgabe des vorherigen Befehls sollte wie der folgende Text aussehen:
-- Generated SAS Token --
SharedAccessSignature sr=https%3a%2f%YourEventHubNamespace.servicebus.windows.net%2fYourEventHub&sig=xxxxxxxxxxxxxxxxxxxxxxx&se=2059133074&skn=SharedKeyNameIsHERE
-- End of generated SAS Token --
Kopieren Sie den gesamten SAS-Tokenwert (die Zeile, die mit SharedAccessSignature) beginnt, um ihn später zu verwenden, wenn Sie CES konfigurieren, z. B. das folgende Beispiel:
SharedAccessSignature sr=https%3a%2f%YourEventHubNamespace.servicebus.windows.net%2fYourEventHub&sig=xxxxxxxxxxxxxxxxxxxxxxx&se=2059133074&skn=SharedKeyNameIsHERE
Aktivieren und Konfigurieren des Änderungsereignisstreamings
Um das Streaming von Änderungsereignissen zu aktivieren und zu konfigurieren, ändern Sie den Datenbankkontext in die Benutzerdatenbank, und führen Sie dann die folgenden Schritte aus:
- Wenn sie noch nicht konfiguriert ist, legen Sie die Datenbank auf das vollständige Wiederherstellungsmodell fest.
- Erstellen Sie einen Master-Schlüssel und eine datenbankbegrenzte Anmeldeinformation.
- Aktivieren des Ereignisstreamings.
- Erstellen Sie die Ereignisstromgruppe.
- Fügen Sie der Ereignisdatenstromgruppe eine oder mehrere Tabellen hinzu.
Die Beispiele in diesem Abschnitt veranschaulichen, wie SIE CES für das AMQP-Protokoll und das Apache Kafka-Protokoll aktivieren:
- Streamen zu Azure Event Hubs über das AMQP-Protokoll
- Streamen zu Azure Event Hubs über das Apache Kafka-Protokoll
Im Folgenden sind Beispielparameterwerte für die Beispiele in diesem Abschnitt aufgeführt:
@stream_group_name = N'myStreamGroup'@destination_location = N'myEventHubsNamespace.servicebus.windows.net/myEventHubsInstance'– Dieser Wert ist der FQDN des spezifischen Azure Event Hubs und des Instanznamens.@partition_key_scheme = N'None'- (Standard) Partitionen werden in aufeinanderfolgender Reihenfolge ausgewählt. Weitere mögliche Optionen sind:-
StreamGroup- Partitionierung durch die Stream-Gruppe -
Table- Partitionierung nach Tabelle -
Column- Partitionierung nach Spalten
-
[optional, wenn Richtlinien für den gemeinsamen Zugriff über Den Dienstschlüssel verwendet werden]
- Primär- oder Sekundärschlüsselwert aus der Richtlinie für den freigegebenen Zugriff:
Secret = 'BVFnT3baC/K6I8xNZzio4AeoFt6nHeK0i+ZErNGsxiw='
- Primär- oder Sekundärschlüsselwert aus der Richtlinie für den freigegebenen Zugriff:
EXEC sys.sp_add_object_to_event_stream_group N'myStreamGroup', N'dbo.myTable'@max_message_size_kb = 256- 256 KB ist die standardmäßige maximale Nachrichtengröße, dieser Wert sollte jedoch an den Grenzwerten der Ziel-Azure Event Hubs angepasst werden.
Beispiel: Streamen zu Azure Event Hubs über das AMQP-Protokoll
Die Beispiele in diesem Abschnitt zeigen, wie Sie Änderungsereignisse mithilfe des AMQP-Protokolls in Azure Event Hubs streamen. AMQP ist das standardmäßige systemeigene Azure Event Hubs-Protokoll.
Im Beispiel in diesem Abschnitt wird ein SAS-Token verwendet, um sich über das AMQP-Protokoll bei Ihrer Azure Event Hubs-Instanz zu authentifizieren. Wenn die Microsoft Entra-Authentifizierung nicht verfügbar ist, verwenden Sie ein SAS-Token anstelle eines Dienstschlüsselwerts für verbesserte Sicherheit.
Ersetzen Sie Werte in spitzen Klammern (<value>) durch Werte für Ihre Umgebung.
USE <database name>;
-- Create the Master Key with a password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Password>';
CREATE DATABASE SCOPED CREDENTIAL <CredentialName>
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<Generated SAS Token>' -- Be sure to copy the entire token. The SAS token starts with "SharedAccessSignature sr="
EXEC sys.sp_enable_event_stream
EXEC sys.sp_create_event_stream_group
@stream_group_name = N'<EventStreamGroupName>',
@destination_type = N'AzureEventHubsAmqp',
@destination_location = N'<AzureEventHubsHostName>/<EventHubsInstance>',
@destination_credential = <CredentialName>,
@max_message_size_kb = <MaxMessageSize>,
@partition_key_scheme = N'<PartitionKeyScheme>'
EXEC sys.sp_add_object_to_event_stream_group
N'<EventStreamGroupName>',
N'<SchemaName>.<TableName>'
Beispiel: Stream zu Azure Event Hubs über das Apache Kafka-Protokoll
Die Beispiele in diesem Abschnitt zeigen, wie Sie Änderungsereignisse mithilfe des Apache Kafka-Protokolls an Azure Event Hubs streamen.
Im Beispiel in diesem Abschnitt wird ein SAS-Token verwendet, um sich über das Apache Kafka-Protokoll bei Ihrer Azure Event Hubs-Instanz zu authentifizieren. Wenn die Microsoft Entra-Authentifizierung nicht verfügbar ist, verwenden Sie ein SAS-Token anstelle eines Dienstschlüsselwerts für verbesserte Sicherheit.
Ersetzen Sie Werte in spitzen Klammern (<value>) durch Werte für Ihre Umgebung.
USE <database name>
-- Create the Master Key with a password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Password>'
CREATE DATABASE SCOPED CREDENTIAL <CredentialName>
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<Event Hubs Namespace – Primary or Secondary connection string>'
EXEC sys.sp_enable_event_stream
EXEC sys.sp_create_event_stream_group
@stream_group_name = N'<EventStreamGroupName>',
@destination_type = N'AzureEventHubsApacheKafka',
@destination_location = N'<AzureEventHubsHostName>:<port>/<EventHubsInstance>', -- myEventHubsNamespace.servicebus.windows.net:9093/myEventHubsInstance
@destination_credential = <CredentialName>,
@max_message_size_kb = <MaxMessageSize>,
@partition_key_scheme = N'<PatitionKeyScheme>'
EXEC sys.sp_add_object_to_event_stream_group
N'<EventStreamGroupName>',
N'<SchemaName>.<TableName>'
CES-Konfiguration und -Funktion anzeigen
Gibt in sys.databases an, is_event_stream_enabled = 1 dass das Streaming von Änderungsereignissen für die Datenbank aktiviert ist.
Die folgende Abfrage gibt alle Datenbanken mit aktivierter Änderungsereignisstreaming zurück:
SELECT *
FROM sys.databases
WHERE is_event_stream_enabled = 1;
In sys.tables gibt an, is_replicated = 1 dass eine Tabelle gestreamt wird, und sp_help_change_feed_table Informationen zu den Tabellengruppen- und Tabellenmetadaten für das Streaming von Änderungsereignissen bereitstellt.
Die folgende Abfrage gibt alle Tabellen mit aktivierter Änderungsereignisstreaming zurück und stellt Metadateninformationen bereit:
SELECT name,
is_replicated
FROM sys.tables;
EXECUTE sp_help_change_feed_table
@source_schema = '<schema name>',
@source_name = '<table name>';
Gespeicherte CES-Prozeduren, Systemfunktionen und DMVs
In der folgenden Tabelle sind die gespeicherten Prozeduren, Systemfunktionen und DMVs aufgeführt, die Sie zum Konfigurieren, Deaktivieren und Überwachen des Änderungsereignisstreamings verwenden können:
| Systemobjekt | BESCHREIBUNG |
|---|---|
|
|
|
| sys.sp_enable_event_stream | Aktiviert CES für die aktuelle Benutzerdatenbank. |
| sys.sp_create_event_stream_group | Erstellt eine Datenstromgruppe, bei der es sich um eine Streamingkonfiguration für eine Gruppe von Tabellen handelt. Die Datenstromgruppe definiert auch das Ziel und die zugehörigen Details (z. B. Authentifizierung, Nachrichtengröße, Partitionierung). Die stream_group_id wird automatisch generiert und für den Endbenutzer angezeigt, wenn die Prozedur abgeschlossen ist. |
| sys.sp_add_object_to_event_stream_group | Fügt der Datenstromgruppe eine Tabelle hinzu. |
|
|
|
| sys.sp_remove_object_from_event_stream_group | Entfernt eine Tabelle aus der Datenstromgruppe. |
| sys.sp_drop_event_stream_group | Entfernt die Datenstromgruppe. Die Streamgruppe darf nicht verwendet werden. |
| sys.sp_disable_event_stream | Deaktiviert CES für die aktuelle Benutzerdatenbank. |
|
|
|
| sys.dm_change_feed_errors | Gibt Übermittlungsfehler zurück. |
| sys.dm_change_feed_log_scan_sessions | Gibt Informationen zur Protokoll-Scan-Aktivität zurück. |
| sys.sp_help_change_feed_settings | Stellt den Status und die Informationen des konfigurierten Änderungsereignisstreamings bereit. |
| sys.sp_help_change_feed | Überwacht die aktuelle Konfiguration des Änderungsdatenstroms. |
| sys.sp_help_change_feed_table_groups | Gibt Metadaten zurück, die zum Konfigurieren von Änderungsereignisstreaminggruppen verwendet werden. |
| sys.sp_help_change_feed_table | Stellt den Status und die Informationen der Streaminggruppe sowie der Tabellenmetadaten für das Streaming von Änderungsereignissen bereit. |
Einschränkungen
Change Event Streaming (CES) hat die folgenden Einschränkungen:
- Azure SQL-Datenbank
- Serverebene und allgemeine Einschränkungen
- Einschränkungen auf Datenbankebene
- Einschränkungen auf Tabellenebene
- Einschränkungen auf Spaltenebene
- Berechtigungen in der Quelldatenbank
Azure SQL-Datenbank
Die folgenden Einschränkungen gelten für die Verwendung von CES mit Azure SQL-Datenbank:
- Das Debuggen von Extended Events (xEvents) in der Azure SQL-Datenbank ist derzeit nicht verfügbar.
Serverebene und allgemeine Einschränkungen
- CES wird unter Linux unter SQL Server 2025 (17.x) nicht unterstützt.
- CES gibt Ereignisse nur für Datenänderungen aus
INSERT,UPDATEundDELETEDML-Anweisungen aus. - CES behandelt keine Schemaänderungen (DDL-Vorgänge), was bedeutet, dass keine Ereignisse für DDL-Vorgänge ausgegeben werden. DDL-Vorgänge werden jedoch nicht blockiert. Wenn Sie sie ausführen, spiegelt das Schema der nachfolgenden DML-Ereignisse die aktualisierte Tabellenstruktur wider. Es wird erwartet, dass Sie Ereignisse mit dem aktualisierten Schema reibungslos und elegant behandeln.
- Derzeit streamt CES keine Daten, die in einer Tabelle vorhanden sind, bevor CES aktiviert ist. Vorhandene Daten werden nicht vorab geladen oder als Momentaufnahme gesendet, wenn CES aktiviert ist.
- Wenn JSON das angegebene Ausgabeformat ist, werden große Ereignisnachrichten möglicherweise auf ca. 25% der konfigurierten maximalen Nachrichtengröße pro Datenstromgruppe aufgeteilt. Diese Einschränkung gilt nicht für den binären Ausgabetyp.
- Wenn eine Nachricht den Grenzwert für die Nachrichtengröße von Azure Event Hubs überschreitet, ist der Fehler derzeit nur über erweiterte Ereignisse feststellbar. CES xEvents sind derzeit nur in SQL Server 2025 und nicht in der Azure SQL-Datenbank verfügbar.
- Das Umbenennen von Tabellen und Spalten, die für CES konfiguriert sind, wird nicht unterstützt. Das Umbenennen einer Tabelle oder Spalte schlägt fehl. Datenbankbenennungen sind zulässig.
- Die Microsoft Entra-Authentifizierung für CES ist derzeit in SQL Server 2025 nicht verfügbar.
Einschränkungen auf Datenbankebene
- CES unterstützt nur Datenbanken, die mit dem vollständigen Wiederherstellungsmodell konfiguriert sind.
- CES unterstützt keine Datenbanken, die mit Fabric Mirrored Databases für SQL Server, Transaktionsreplikation, Datenerfassung oder Azure Synapse Link konfiguriert sind. Die Änderungsnachverfolgung wird für Datenbanken unterstützt, die mit CES konfiguriert sind.
- CES kann nur aus schreibbaren primären Datenbanken streamen. Sekundäre Datenbanken, die Teil von AlwaysOn-Verfügbarkeitsgruppen sind oder die den Link "Verwaltete Instanz " verwenden, können nicht als Streamingquellen konfiguriert werden.
- Sie können CES nicht für Ansichten oder materialisierte Ansichten aktivieren.
Einschränkungen auf Tabellenebene
Eine Tabelle kann nur zu einer Streaminggruppe gehören. Sie können dieselbe Tabelle nicht zu mehreren Zielen streamen.
Sie können benutzertabellen nur für CES konfigurieren. CES unterstützt keine Streamingsystemtabellen.
Sie können bis zu 4.096 Datenstromgruppen konfigurieren. Jede Datenstromgruppe kann bis zu 40.000 Tabellen enthalten.
Onlineindexvorgänge werden nicht unterstützt.
Während CES für eine Tabelle aktiviert ist, können Sie dieser Tabelle keine Primärschlüsseleinschränkung hinzufügen oder ablegen.
ALTER TABLE SWITCH PARTITIONwird für Tabellen, die für CES konfiguriert sind, nicht unterstützt.TRUNCATE TABLEwird für Tabellen, die für CES aktiviert sind, nicht unterstützt.CES unterstützt keine Tabellen, die eines der folgenden Features verwenden:
- Gruppierte Columnstore-Indizes
- Zeitliche Verlaufstabellen oder Sachbuchverlaufstabellen
- Immer Verschlüsselt
- In-Memory OLTP (speicheroptimierte Tabellen)
- Diagrammtabellen
- Externe Tabellen
Einschränkungen auf Spaltenebene
- CES unterstützt die folgenden Datentypen nicht. Streaming überspringt Spalten dieser Typen:
- geography
- geometry
- image
- json
- rowversion / Zeitstempel
- sql_variant
- Text / ntext
- vector
- xml
- Benutzerdefinierte Typen (UDT)
Berechtigungen in der Quelldatenbank
- Für die Sicherheit auf Zeilenebene gibt CES Änderungen von allen Zeilen unabhängig von den Benutzerberechtigungen aus.
- Die dynamische Datenmaskierung gilt nicht für Daten, die über CES gesendet werden. Daten werden ungemasket gestreamt, auch wenn die Maskierung konfiguriert ist.
- CES gibt keine Ereignisse aus, die sich auf Berechtigungsänderungen auf Objektebene beziehen (z. B. das Erteilen von Berechtigungen für bestimmte Spalten).