Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führen Sie die SQL Server-Datenbankeinrichtungsaufgaben aus, um sie mithilfe von Lakeflow Connect in Azure Databricks aufzunehmen.
Anforderungen
- Der Benutzer, der das Skript ausführt, muss Mitglied der
db_ownerRolle sein. Diese Rolle ist nur für die Ausführung des Setup-Skripts erforderlich, nicht für den Benutzer für die Datenübernahme.
Verwenden Sie eine der folgenden Methoden, um der db_owner Rolle einen Benutzer hinzuzufügen:
Modern SQL Server (2012+): Verwenden
ALTER ROLEUSE [your_database]; ALTER ROLE db_owner ADD MEMBER [your_setup_user]; GOÄltere SQL Server- oder eingeschränkte Umgebungen: Verwenden
sp_addrolememberUSE [your_database]; EXEC sp_addrolemember 'db_owner', 'your_setup_user'; GOFür CT-Einrichtung: Die Änderungsnachverfolgung muss auf der Plattform verfügbar sein.
Für das CDC-Setup: Die Erfassung geänderter Daten muss auf der Plattform verfügbar sein.
Schritt 1: Installieren oder aktualisieren Sie Utility-Objekte
In diesem Schritt werden die gespeicherten Prozeduren und Funktionen des Hilfsprogramms installiert, die für die SQL Server-Einrichtung erforderlich sind. Ausführliche Informationen dazu, was installiert wird, finden Sie in der Skriptreferenz zu SQL Server-Hilfsobjekten.
Das gleiche Skript behandelt sowohl eine Erstinstallation als auch ein Upgrade gegenüber einer vorherigen Version. Folgen Sie den untenstehenden nummerierten Schritten. Schritte mit der Markierung (nur Upgrade) gelten nur, wenn bereits eine vorherige Version der Utility-Objekte installiert ist. Lass sie bei einer Erstinstallation weg.
Important
(Nur bei einem Upgrade) Stoppen Sie das Gateway (Gateway-basierte Pipeline) oder pausieren Sie die Pipeline (integrierte CDC), bevor Sie das Skript ausführen. Ein Pausieren verhindert, dass eine Schemaänderung schnell fehlschlägt und während des kurzen Wechsels erneut versucht werden muss.
Laden Sie das Skript herunter:
Öffnen Sie das Skript in SQL Server Management Studio (SSMS), Azure Data Studio oder Ihrem bevorzugten SQL-Client.
Stellen Sie eine Verbindung mit Ihrer SQL Server-Instanz als Benutzer mit der
db_ownerRolle her.Stellen Sie sicher, dass Sie mit der Zieldatenbank verbunden sind.
(Nur beim Upgrade) Datenaufnahme pausieren: das Gateway stoppen (gatewaybasierte Pipeline) oder die Pipeline pausieren (integriertes CDC).
Führen Sie das Skript aus. Bei einem Upgrade erzeugt das Skript die Utility-Funktionen neu und entfernt nur noch legacy-präfixierte
replicantObjekte. Es lässt deine bestehenden DDL-Supportobjekte bestehen, sodass der aktuelle DDL-Trigger Schemaänderungen weiterhin erfasst, bis du die Setup-Prozeduren im nächsten Schritt erneut ausführst.(Nur bei Upgrade) Führe den Setupvorgang für jede von dir verwendete Erfassungsmethode erneut aus:
lakeflowSetupChangeTrackingwenn du Change Tracking verwendest, undlakeflowSetupChangeDataCapturewenn du CDC verwendest. Dies übernimmt Ihre Objekte in die neue Version und stellt die Berechtigungen des Erfassungsbenutzers wieder her. Geben Sie nur@Userweiter. Du benötigst@Tablesnicht, denn Change Tracking und CDC bleiben bei einem Upgrade für deine Tabellen aktiviert.-- If you use change tracking: EXEC dbo.lakeflowSetupChangeTracking @User = 'your_ingestion_user'; -- omit @User if you did not pass it originally -- If you use CDC: EXEC dbo.lakeflowSetupChangeDataCapture @User = 'your_ingestion_user'; -- omit @User if you did not pass it originallyÜbergebe alle Nicht-Standard-Optionen erneut, damit das Upgrade deine Konfiguration bewahrt:
-
Änderungsverfolgung: Standardmäßig werden die DDL-Audittabelle und der Trigger nicht erstellt, sodass bei den meisten Upgrades hier nichts zusätzlich angegeben werden muss. Wenn Ihre Installation die DDL-Schemaänderungserfassung verwendet (sie hat eine
lakeflowDdlAudit-Tabelle), geben Sie@CreateDdlSupportingObjects = 1beilakeflowSetupChangeTrackingan, um diese Objekte in die neue Version zu übernehmen. Installationen aus der Zeit vor der Existenz dieser Option haben sie automatisch erstellt, also füge die Flagge hinzu, wenn du auf DDL-Erfassung angewiesen bist, auch wenn du sie nie eingestellt hast. -
CDC: Wenn Sie
lakeflowSetupChangeDataCaptureauf@AllowDisablePreExistingCaptureInstances = 1verwenden, fügen Sie es erneut hinzu.
-
Änderungsverfolgung: Standardmäßig werden die DDL-Audittabelle und der Trigger nicht erstellt, sodass bei den meisten Upgrades hier nichts zusätzlich angegeben werden muss. Wenn Ihre Installation die DDL-Schemaänderungserfassung verwendet (sie hat eine
Installation überprüfen:
SELECT dbo.lakeflowUtilityVersion() AS UtilityVersion; SELECT dbo.lakeflowDetectPlatform() AS Platform;(Nur bei Upgrade) Datenaufnahme fortsetzen: Gateway oder Pipeline fortsetzen.
Hinweis
Die db_owner Rolle ist nur für den Benutzer erforderlich, der dieses Setupskript ausführt. Der Ingestionsbenutzer (im @User-Parameter in den nachfolgenden Schritten angegeben) erfordert nur die spezifischen Berechtigungen, die von den Einrichtungsverfahren gewährt werden. Details finden Sie unter Microsoft SQL Server-Datenbankbenutzeranforderungen .
Hinweis
(Nur beim Upgrade) Vermeiden Sie während des Zeitfensters für das Upgrade Schemaänderungen an überwachten Tabellen. Der Cutover läuft in einer Transaktion, sodass eine gleichzeitige Schemaänderung nicht verloren geht, aber sie kann kurzzeitig blockieren oder schnell scheitern und einen erneuten Versuch erfordern, bis der Cutover abgeschlossen ist.
Schritt 2: Aktivieren der Änderungsnachverfolgung (für Tabellen mit Primärschlüsseln)
Die Änderungsnachverfolgung ist ein einfacher Mechanismus, mit dem Änderungen an Tabellenzeilen nachverfolgt werden. Dieser Schritt ermöglicht CT auf Datenbankebene auf festgelegten Tabellen. Um auch Schemaänderungen (DDL) zu erfassen, übergeben Sie @CreateDdlSupportingObjects = 1, um die Unterstützungsobjekte für DDL zu erstellen. Dies ist eine Opt-in-Funktion und standardmäßig deaktiviert. Ausführliche Informationen finden Sie in lakeflowSetupChangeTracking der Skriptreferenz zu SQL Server-Hilfsobjekten.
-- Enable change tracking on specific tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'Sales.Orders,Production.Products,HR.Employees',
@User = 'your_ingestion_user',
@Retention = '2 DAYS';
Alternative Optionen:
- Für alle Tabellen mit Primärschlüsseln:
@Tables = 'ALL' - Für bestimmte Schemas:
@Tables = 'SCHEMAS:Sales,HR,Production' - Nur für setup auf Datenbankebene (keine Tabellenaktivierung):
@Tables = NULL
Schritt 3: Aktivieren der Änderungsdatenerfassung (für Tabellen ohne Primärschlüssel)
CDC erfasst Einfüge-, Aktualisierungs- und Löschaktivitäten und ist besonders nützlich für Tabellen ohne Primärschlüssel. Dieser Schritt ermöglicht CDC auf Datenbankebene, richtet die Verwaltung der Aufzeichnungsinstanz ein und erstellt Trigger für die automatisierte Verarbeitung von Schemaänderungen. Ausführliche Informationen finden Sie in lakeflowSetupChangeDataCapture der Skriptreferenz zu SQL Server-Hilfsobjekten.
-- Enable CDC on specific tables (particularly those without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'Staging.ImportData,Logs.AuditTrail',
@User = 'your_ingestion_user';
Alternative Optionen:
- Für alle Tabellen:
@Tables = 'ALL' - Für bestimmte Schemas:
@Tables = 'SCHEMAS:Sales,HR' - Nur für Setup auf Datenbankebene:
@Tables = NULL
Damit Lakeflow Connect die bereits vorhandene (nicht von Lakeflow stammende) CDC-Erfassungsinstanz einer Tabelle übernehmen kann, anstatt sie beizubehalten, setzen Sie @AllowDisablePreExistingCaptureInstances = 1.
Hinweis
Sie können entweder die Änderungsnachverfolgung oder CDC verwenden oder beides verwenden. Databricks empfiehlt die Verwendung der Änderungsnachverfolgung für Tabellen mit Primärschlüsseln (Schritt 2) und CDC für Tabellen ohne Primärschlüssel (Schritt 3) für eine umfassende Abdeckung.
Verwaltung der Aufzeichnungsinstanz
Lakeflow Connect verwendet eine präfixbasierte Benennungskonvention, um CDC-Aufnahmeinstanzen zu verwalten, ohne bereits vorhandene Aufnahmeinstanzen zu beeinflussen, die von anderen Systemen oder Prozessen erstellt wurden.
Benennung von Lakeflow-Aufnahmeinstanzen
Lakeflow Connect erstellt und verwaltet Erfassungsinstanzen mithilfe des folgenden Benennungsmusters:
lakeflow_<schema>_<table>_1lakeflow_<schema>_<table>_2
Lakeflow Connect verwaltet nur Erfassungsinstanzen, die diesem Benennungsmuster entsprechen. Bereits vorhandene Erfassungsinstanzen mit unterschiedlichen Namen bleiben erhalten und bleiben von Lakeflow-Vorgängen unberührt.
Hinweis
In Hilfsskriptversionen vor 1.4 verwendete Lakeflow Connect das New_ Präfix für Aufnahmeinstanzen (z. B New_schema_table_1. ). Wenn Sie ein Upgrade von einer früheren Version durchführen, führen Sie das aktualisierte Hilfsprogrammskript aus, um auf die Benennungskonvention lakeflow_ zu migrieren. Das Skript behandelt während des Übergangs automatisch die Abwärtskompatibilität mit vorhandenen Aufzeichnungsinstanzen, denen New_ vorangestellt ist.
Anforderungen an die Erfassungsinstanz-Slot
SQL Server ermöglicht maximal 2 Erfassungsinstanzen pro Tabelle. Damit Lakeflow Connect mit CDC funktioniert:
- Mindestens eines der beiden Aufnahmeinstanzplätze muss verfügbar sein, damit Lakeflow seine
lakeflow_präfixierte Instanz erstellen kann. - Wenn beide Slots bereits von Nicht-Lakeflow-Erfassungsinstanzen belegt sind, kann Lakeflow Connect keine eigene Aufnahmeinstanz erstellen und verwalten. Obwohl Lakeflow aus einer bereits vorhandenen Aufnahmeinstanz gelesen werden kann, kann er keine vollständigen Aktualisierungs- oder Schemaentwicklungsvorgänge ausführen.
Tipp
Wenn beide Aufnahmeinstanzplätze belegt sind, verwenden Sie stattdessen die Änderungsnachverfolgung , oder entfernen Sie eine der vorhandenen Aufnahmeinstanzen, wenn sie nicht mehr benötigt wird.
Koexistenz mit anderen CDC-Verbrauchern
Lakeflow Connect kann sicher mit anderen CDC-Verbrauchern in derselben Tabelle koexistieren:
- Bereits vorhandene Erfassungsinstanzen werden während aller Lakeflow-Vorgänge beibehalten (z. B. vollständige Aktualisierung und Schemaentwicklung).
- Lakeflow löscht und erstellt bei Bedarf nur seine eigenen
lakeflow_-präfixierten Instanzen neu. - Andere Systeme, die CDC-Daten aus Nicht-Lakeflow-Aufnahmeinstanzen verwenden, funktionieren weiterhin ohne Unterbrechung.
Vorgänge, die Lakeflow-Erfassungsinstanzen neu erstellen:
Die folgenden Vorgänge führen dazu, dass Lakeflow seine Aufzeichnungsinstanzen mit vorangestelltem lakeflow_ löscht und neu erstellt (aber keine anderen):
- Vollständige Aktualisierungsvorgänge
- Hinzufügen von Spalten zu Tabellen (
ADD COLUMN)
Beispielszenario:
Wenn eine Tabelle eine bereits vorhandene Aufnahmeinstanz mit dem Namen my_app_cdc hat:
- Lakeflow Connect erstellt
lakeflow_schema_table_1. - Beide Erfassungsinstanzen existieren sicher nebeneinander.
- Wenn Lakeflow eine vollständige Aktualisierung oder Schemaentwicklung durchführt, wird nur
lakeflow_schema_table_1neu erstellt. - Die
my_app_cdcInstanz bleibt unberührt und funktioniert weiterhin für das andere System.
Schritt 4: Erteilen zusätzlicher Berechtigungen (falls erforderlich)
In diesem Schritt werden die erforderlichen Berechtigungen auf System- und Tabellenebene für den Benutzer für die Datenaufnahme gewährt. Während die Schritte 2 und 3 CT- und CDC-spezifische Berechtigungen erteilen, stellt dieser Schritt sicher, dass der Benutzer über alle erforderlichen SELECT Berechtigungen verfügt. Ausführliche Informationen finden Sie in lakeflowFixPermissions der Skriptreferenz zu SQL Server-Hilfsobjekten.
-- Grant system-level and table-level permissions
EXEC dbo.lakeflowFixPermissions
@User = 'your_ingestion_user',
@Tables = 'Sales.Orders,Production.Products,HR.Employees';
Alternative Optionen:
- Für alle Tabellen:
@Tables = 'ALL' - Nur Systemberechtigungen:
@Tables = NULL - Bestimmte Schemas:
@Tables = 'SCHEMAS:Sales,HR'
Hinweis
Die Einrichtungsverfahren in den Schritten 2 und 3 erteilen automatisch die erforderlichen CT- und CDC-Berechtigungen, aber Sie müssen dieses Verfahren möglicherweise ausführen, um zusätzliche Berechtigungen auf Tabellenebene SELECT zu erteilen oder wenn Berechtigungen widerrufen wurden.
Schritt 5: Überprüfen des Setups
Führen Sie die folgenden Abfragen aus, um zu bestätigen, dass die Änderungsnachverfolgung und das CDC in Ihrer Datenbank und Tabellen ordnungsgemäß konfiguriert sind:
-- Check Change Tracking status
SELECT
d.name AS DatabaseName,
ctd.is_auto_cleanup_on,
ctd.retention_period,
ctd.retention_period_units_desc
FROM sys.change_tracking_databases ctd
INNER JOIN sys.databases d ON ctd.database_id = d.database_id
WHERE d.name = DB_NAME();
-- Check tables with Change Tracking enabled
SELECT
SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
ct.is_track_columns_updated_on,
ct.begin_version,
ct.cleanup_version
FROM sys.change_tracking_tables ct
INNER JOIN sys.tables t ON ct.object_id = t.object_id;
-- Check CDC status
SELECT
DB_NAME() AS DatabaseName,
is_cdc_enabled
FROM sys.databases
WHERE database_id = DB_ID();
-- Check tables with CDC enabled
SELECT
SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
ct.capture_instance,
ct.start_lsn,
ct.create_date
FROM cdc.change_tables ct
INNER JOIN sys.tables t ON ct.source_object_id = t.object_id;
Aktualisieren von Hilfsprogrammobjekten
Das Upgrade verwendet dasselbe Skript wie eine Erstinstallation. Befolgen Sie Schritt 1: Installieren oder aktualisieren Sie Hilfsobjekte, einschließlich der mit „(nur Upgrade)“ gekennzeichneten Schritte, die das Pausieren der Erfassung, das erneute Ausführen der Einrichtungsverfahren und das Fortsetzen der Erfassung umfassen.
Hinweis
Um zu einer früheren Version des Utility Objects-Skripts zurückzuverkehren, wenden Sie sich an Databricks Support.
Beispiel: Hybrid-Ansatz
Hinweis
In diesem Beispiel wird 'ALL' verwendet, um CT und CDC der Einfachheit halber für alle Tabellen zu aktivieren. Berücksichtigen Sie für die Produktionsverwendung die gängigen Szenarien auf dieser Seite, um bestimmte Schemas oder Tabellen zu verwenden.
-- Step 1: Already completed (script installed)
-- Step 2 & 3: Enable both CT and CDC
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'lakeflow_user',
@Retention = '2 DAYS';
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'lakeflow_user';
-- Step 4: Grant all necessary permissions
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'ALL';
Häufige Szenarien
Szenario 1: Nur Änderungsnachverfolgung (bestimmte Schemas)
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,Production',
@User = 'lakeflow_user',
@Retention = '2 DAYS';
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'SCHEMAS:Sales,Production';
Szenario 2: Nur CDC (bestimmte Tabellen)
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords',
@User = 'lakeflow_user';
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords';
Szenario 3: Hybridansatz (CT für einige Schemas, CDC für bestimmte Tabellen)
-- Enable CT on transactional schemas
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,HR',
@User = 'lakeflow_user',
@Retention = '3 DAYS';
-- Enable CDC on specific staging tables without primary keys
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'Staging.ImportData,Logs.AuditTrail',
@User = 'lakeflow_user';
-- Grant permissions on all tables
EXEC dbo.lakeflowFixPermissions
@User = 'lakeflow_user',
@Tables = 'ALL';