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.
Access-Referenzmaterial für das Skript für SQL Server-Hilfsobjekte, einschließlich Komponenten, Parametern und Problembehandlung.
Überblick
Das Skript installiert gespeicherte Prozeduren und Funktionen des versionsierten Hilfsprogramms, um Ihre SQL Server-Datenbank für die Aufnahme in Lakeflow Connect einzurichten. Zu den Setup-Aufgaben gehören:
- Berechtigungsverwaltung
- Setup der Änderungsnachverfolgung (CT)
- Ändern der Datenerfassungseinrichtung (CDC)
- Plattformerkennung
- DDL unterstützt die Objekterstellung für die Schemaänderungsnachverfolgung
Versionsinformationen
- Aktuelle Version: 1.1
- Hauptversion: 1
- Nebenversion: 1
- Version-Funktion:
lakeflowUtilityVersion_1_1()
Wichtige Komponenten
Funktionen
lakeflowDetectPlatform()
Erkennt den SQL Server-Plattformtyp.
Gibt zurück: 'AZURE_SQL_DATABASE', 'AZURE_SQL_MANAGED_INSTANCE', 'AMAZON_RDS', 'ON_PREMISES' oder 'UNKNOWN'
lakeflowUtilityVersion_1_1()
Erkennt die Version der Dienstobjekte.
Rückgabewert: '1.1'
Gespeicherte Prozeduren
lakeflowFixPermissions
Erteilt Benutzern erforderliche Berechtigungen für Datenaufnahmevorgänge.
Parameters:
| Parameter | Description |
|---|---|
@User (NVARCHAR(128)) |
Erforderlich. Benutzername, dem Berechtigungen erteilt werden sollen |
@Tables (NVARCHAR(MAX)) |
Wahlfrei. Steuert den Berechtigungsbereich auf Tabellenebene |
@Tables Parameteroptionen:
| Option | Description |
|---|---|
NULL |
Nur Berechtigungen auf Systemebene gewähren (Standard) |
'ALL' |
Erteilen von Berechtigungen für alle Benutzertabellen in der Datenbank |
'SCHEMAS:Schema1,Schema2' |
Erteilen von Berechtigungen für alle Tabellen in angegebenen Schemas |
'Schema.Table1,Schema.Table2' |
Erteilen von Berechtigungen für bestimmte Tabellen |
| Unterstützung für Wildcards | Beispiel: 'Sales.*,HR.Employees' |
Funktionsweise:
- Berechtigungen
SELECTfür erforderliche Systemansichten (sys.objects,sys.tables,sys.columns, usw.) - Finanzhilfen für gespeicherte Systemprozeduren
EXECUTE(sp_tables,sp_columns_100usw.) - Optional kann
SELECTauf Benutzertabellen basierend auf dem Parameter@Tablesgewährt werden - Behandelt plattformspezifische Unterschiede (Azure SQL-Datenbank, verwaltete Instanz, RDS, lokal)
lakeflowSetupChangeTracking
Ermöglicht die Änderungsnachverfolgung auf Datenbank- und Tabellenebene mit DDL-Unterstützung.
Parameters:
| Parameter | Description |
|---|---|
@Tables (NVARCHAR(MAX)) |
Wahlfrei. Tabellen zum Aktivieren von CT on |
@User (NVARCHAR(128)) |
Wahlfrei. Benutzer, dem Berechtigungen erteilt werden sollen |
@Retention (NVARCHAR(50)) |
Wahlfrei. CT-Aufbewahrungszeitraum (Standard: '2 DAYS') |
@Mode (NVARCHAR(10)) |
Wahlfrei.
'INSTALL' (Standard) oder 'CLEANUP' |
@Tables Parameteroptionen:
| Option | Description |
|---|---|
NULL |
Einrichten der CT- und DDL-Unterstützung auf Datenbankebene (keine Tabellenaktivierung) |
'ALL' |
CT auf allen Benutzertabellen mit Primärschlüsseln aktivieren |
'SCHEMAS:Schema1,Schema2' |
Aktivieren von CT für Tabellen in angegebenen Schemas |
'Schema.Table1,Schema.Table2' |
Aktivieren von CT für bestimmte Tabellen |
| Unterstützung für Wildcards | Beispiel: 'Sales.*,HR.Employees' |
Funktionsweise:
- Aktiviert die Änderungsnachverfolgung auf Datenbankebene, wenn sie noch nicht aktiviert ist.
- Erstellt eine versionsierte DDL-Überwachungstabelle (
lakeflowDdlAudit_1_2) - Erstellt einen DDL-Audit-Trigger zum Erfassen von Schemaänderungen
- Aktiviert CT für angegebene Tabellen (überspringt Tabellen ohne Primärschlüssel)
- Erteilt
VIEW CHANGE TRACKINGberechtigungen für den angegebenen Benutzer -
CLEANUPmode: Entfernt DDL-Supportobjekte
Wichtige Verhaltensweisen:
- Automatisches Überspringen von Tabellen ohne Primärschlüssel (CDC wird für diese empfohlen)
- Intelligente Ermittlung mit dem
'ALL'Parameter - Idempotent: Sicher, mehrmals auszuführen
lakeflowSetupChangeDataCapture
Aktiviert CDC auf Datenbank- und Tabellenebene mit DDL-Unterstützung und Erfassungsinstanzverwaltung.
Parameters:
| Parameter | Description |
|---|---|
@Tables (NVARCHAR(MAX)) |
Wahlfrei. Tabellen zum Aktivieren von CDC auf |
@User (NVARCHAR(128)) |
Wahlfrei. Benutzer, dem Berechtigungen erteilt werden sollen |
@Mode (NVARCHAR(10)) |
Wahlfrei.
'INSTALL' (Standard) oder 'CLEANUP' |
@Tables Parameteroptionen:
| Option | Description |
|---|---|
NULL |
Einrichten Sie die CDC- und DDL-Unterstützung auf Datenbankebene |
'ALL' |
Aktivieren von CDC für alle Benutzertabellen |
'SCHEMAS:Schema1,Schema2' |
Aktivieren von CDC für Tabellen in angegebenen Schemas |
'Schema.Table1,Schema.Table2' |
Aktivieren von CDC für bestimmte Tabellen |
Funktionsweise:
- Aktiviert CDC auf Datenbankebene, falls noch nicht aktiviert
- Erstellt eine Erfassungsinstanz-Überwachungstabelle (
lakeflowCaptureInstanceInfo_1_2) - Erstellt Hilfsprozeduren für die Aufzeichnungsinstanzverwaltung:
lakeflowDisableOldCaptureInstance_1_2lakeflowMergeCaptureInstances_1_2lakeflowRefreshCaptureInstance_1_2
- Erstellt einen Trigger für die
ALTER TABLEautomatische Behandlung von Schemaänderungen - Aktiviert CDC für angegebene Tabellen
- Erteilt dem angegebenen Benutzer erforderliche CDC-Berechtigungen.
-
CLEANUPmodus: Entfernt alle CDC-DDL-Unterstützungsobjekte.
Wichtige Verhaltensweisen:
- Funktioniert mit Tabellen mit oder ohne Primärschlüssel
- Behandelt automatisch die Rotation der Aufzeichnungsinstanz bei Änderungen am Schema.
- Idempotent: Sicher, mehrmals auszuführen
Plattformunterstützung
- Lokaler SQL-Server (EngineEdition 1-4)
- Azure SQL-Datenbank (EngineEdition 5)
- Azure SQL Managed Instance (EngineEdition 8)
- Amazon RDS für SQL Server (vom Servernamenmuster erkannt)
Voraussetzungen
- Der Benutzer, der das Skript ausführt, muss Mitglied der
db_ownerRolle sein. - Für die CT-Einrichtung: Die Änderungsverfolgung muss auf der Plattform verfügbar sein.
- Für das CDC-Setup muss Change Data Capture auf der Plattform verfügbar sein.
Installationsanweisungen
Herunterladen und Ausführen des Skripts
Herunterladen des Skripts: utility_script.sql
Ausführen des Skripts
- Öffnen Sie das heruntergeladene Skript in SQL Server Management Studio (SSMS), Azure Data Studio oder Ihrem bevorzugten SQL-Client.
- Stellen Sie eine Verbindung mit Ihrer SQL Server-Instanz her.
- Vergewissern Sie sich, dass Sie mit der Zieldatenbank verbunden sind, in der Sie die Hilfsprogrammobjekte installieren möchten.
- Führen Sie das Skript aus.
Überprüfen der Installation
-- Verify installation SELECT dbo.lakeflowUtilityVersion_1_1() AS UtilityVersion; SELECT dbo.lakeflowDetectPlatform() AS Platform;
Alternative: Ausführen mit der Befehlszeile
Wenn Sie sqlcmd verwenden möchten:
sqlcmd -S YourServerName -d YourDatabase -E -i lakeflow_utility_objects.sql
Hinweis
Ersetzen Sie YourServerName und YourDatabase durch die tatsächlichen Server- und Datenbanknamen. Verwenden Sie -U username -P password anstelle von -E, wenn Sie keine Windows-Authentifizierung verwenden.
Beispiel: Beheben von Berechtigungen (nur System)
-- Grant system permissions only
EXEC dbo.lakeflowFixPermissions
@User = 'myuser';
Beispiel: Beheben von Berechtigungen (mit Tabellenzugriff)
-- Grant system permissions plus access to all tables
EXEC dbo.lakeflowFixPermissions
@User = 'myuser',
@Tables = 'ALL';
-- Grant permissions for specific schemas
EXEC dbo.lakeflowFixPermissions
@User = 'myuser',
@Tables = 'SCHEMAS:Sales,HR,Production';
-- Grant permissions for specific tables
EXEC dbo.lakeflowFixPermissions
@User = 'myuser',
@Tables = 'Sales.Orders,HR.Employees';
Beispiele: Einrichtung der Änderungsnachverfolgung
Nur Datenbankebene
-- Setup CT infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = NULL,
@User = 'myuser';
Aktivieren für alle Tabellen
-- Enable CT on all user tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser';
Schemabasiertes Setup
-- Enable CT on all tables in specific schemas
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'SCHEMAS:Sales,HR',
@User = 'myuser',
@Retention = '3 DAYS';
Bestimmte Tabellen
-- Enable CT on specific tables
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'dbo.Table1,Sales.Orders,HR.Employees',
@User = 'myuser';
Beispiele: CDC-Setup
Nur Datenbankebene
-- Setup CDC infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = NULL,
@User = 'myuser';
Aktivieren für alle Tabellen
-- Enable CDC on all user tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser';
Bestimmte Tabellen
-- Enable CDC on specific tables
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'dbo.Table1,Sales.Orders',
@User = 'myuser';
Beispiel: Hybrid-Ansatz
-- Step 1: Enable CT on tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
@Tables = 'ALL',
@User = 'myuser';
-- Step 2: Enable CDC on remaining tables (without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
@Tables = 'ALL',
@User = 'myuser';
Beispiel: Bereinigung
-- Remove CT DDL support objects
EXEC dbo.lakeflowSetupChangeTracking
@Mode = 'CLEANUP';
-- Remove CDC DDL support objects
EXEC dbo.lakeflowSetupChangeDataCapture
@Mode = 'CLEANUP';
DDL-Unterstützungsobjekte erstellt
Die folgenden DDL-Unterstützungsobjekte werden erstellt, je nachdem, ob Sie die Änderungsnachverfolgung oder CDC verwenden.
Zur Änderungsnachverfolgung
| Objekttyp | Name | Description |
|---|---|---|
| Table | lakeflowDdlAudit_1_2 |
Speichert den DDL-Änderungsverlauf |
| Auslöser | lakeflowDdlAuditTrigger_1_2 |
ALTER TABLE Erfasst Ereignisse |
Für CDC
| Objekttyp | Name | Description |
|---|---|---|
| Table | lakeflowCaptureInstanceInfo_1_2 |
Erfasst Erfassungsinstanzen |
| Procedure | lakeflowDisableOldCaptureInstance_1_2 |
Entfernt alte Aufnahmeinstanz |
| Procedure | lakeflowMergeCaptureInstances_1_2 |
Führt Daten zwischen Instanzen zusammen. |
| Procedure | lakeflowRefreshCaptureInstance_1_2 |
Erstellt eine neue Aufnahmeinstanz |
| Auslöser | lakeflowAlterTableTrigger_1_2 |
Behandelt Schemaänderungen |
Einschränkungen für die Änderungsnachverfolgung
- Erfordert Primärschlüssel: Tabellen ohne Primärschlüssel können die Änderungsnachverfolgung nicht verwenden.
- Das Skript überspringt Automatisch Tabellen ohne PKs und empfiehlt stattdessen die Verwendung von CDC.
Plattformspezifisches Verhalten
- Azure SQL-Datenbank: Auf gespeicherte Systemprozeduren kann standardmäßig zugegriffen werden (keine
EXECUTEZuschüsse erforderlich). - Serverbasierte Ansichten: Beschränkter Zugriff in der Azure SQL-Datenbank für Ansichten wie
sys.change_tracking_databases.
Upgradepfad
- Das Skript legt automatisch alle vorherigen Versionen ab, wenn sie ausgeführt werden.
- Versionsverwaltungsschema:
objectName_majorVersion_minorVersion - Aktuelle Objekte verwenden
_1_1Suffix für die Versionsnachverfolgung.
Bewährte Methoden
- Führen Sie immer eine Ausführung als
db_owneroder einen Benutzer mit entsprechenden Berechtigungen aus. - Testen Sie zuerst Nichtproduktionsdatenbanken.
- Verwenden Sie den Hybridansatz für eine umfassende Abdeckung.
- Führen Sie
lakeflowFixPermissionsnach dem Setup aus, um den ordnungsgemäßen Benutzerzugriff sicherzustellen. - Berücksichtigen Sie Aufbewahrungszeiträume basierend auf Ihrer Aufnahmehäufigkeit.
Problembehandlung
"Der Benutzer, der dieses Skript ausführt, ist kein Rollenmitglied "db_owner".
Lösung: Als Benutzer mit db_owner Rolle ausführen
"Die Änderungsnachverfolgung ist im Katalog nicht aktiviert"
Lösung: Aktivieren Sie CT auf Datenbankebene oder lassen Sie die Prozedur sie automatisch aktivieren.
"Change Data Capture ist für den Katalog nicht aktiviert"
Lösung: Aktivieren sie CDC auf Datenbankebene, oder lassen Sie die Prozedur automatisch verarbeiten.
"Aufgrund fehlender Primärschlüssel wurden Tabellen übersprungen"
Lösung: Stattdessen für diese Tabellen verwenden lakeflowSetupChangeDataCapture
Validierungsintegration
Die folgenden Hilfsobjekte werden vom Java-Validierungsframework überprüft:
| Object | Description |
|---|---|
SqlServerUtilityObjectsSetupValidator |
Überprüft die Installation von Hilfsprogrammobjekten. |
SqlServerChangeDataManagementSetupValidator |
Überprüft die CT/CDC-Einrichtung |
SqlServerDdlSupportObjectsSetupValidator |
Überprüft DDL-Unterstützungsobjekte |
SqlServerPermissionsSetupValidator |
Überprüft Berechtigungen |
Migrationshinweise
Wenn Sie von älteren Versionen von DDL-Unterstützungsobjekten (vor der Ära der Dienstprogramme) upgraden:
- Das Skript bereinigt automatisch ältere Objekte.
- Es ist keine manuelle Bereinigung erforderlich.
- Version 1.1 konsolidiert alle Funktionen in einheitliche Prozeduren.
Weitere Ressourcen
- SQL Server mithilfe des Dienstprogramm-Objektskripts für die Datenaufnahme vorbereiten
- Konfigurieren von Microsoft SQL Server für die Aufnahme in Azure Databricks
- Microsoft SQL Server-Datenbankbenutzeranforderungen
- Nachverfolgen von Datenänderungen (SQL Server) in der SQL Server-Dokumentation
- Informationen zur Änderungsnachverfolgung (SQL Server) in der SQL Server-Dokumentation
- Was ist Change Data Capture (CDC)? in der SQL Server-Dokumentation