Delen via


Scriptreferentie voor SQL Server-hulpprogrammaobjecten

Toegang tot referentiemateriaal voor het script voor hulpprogrammaobjecten van SQL Server, inclusief onderdelen, parameters en probleemoplossing.

Overzicht

Met het script worden geversioneerde hulpprogramma's opgeslagen procedures en functies geïnstalleerd om uw SQL Server-database in te richten voor gegevensopname in Lakeflow Connect. Installatietaken zijn onder andere:

  • Machtigingsbeheer
  • Instelling voor het bijhouden van wijzigingen (CT)
  • CDC-installatie (Data Capture) wijzigen
  • Platformdetectie
  • DDL-ondersteuning voor het maken van objecten voor het bijhouden van schemawijziging

Versie-informatie

  • Huidige versie: 1.1
  • Hoofdversie: 1
  • Kleine versie: 1
  • Versiebeheer: lakeflowUtilityVersion_1_1()

Belangrijkste onderdelen

Functions

lakeflowDetectPlatform()

Hiermee wordt het sql Server-platformtype gedetecteerd.

Retourneert: 'AZURE_SQL_DATABASE', 'AZURE_SQL_MANAGED_INSTANCE', 'AMAZON_RDS', , of 'ON_PREMISES''UNKNOWN'

lakeflowUtilityVersion_1_1()

Hiermee wordt de versie van de hulpprogrammaobjecten gedetecteerd.

Retourneert: '1.1'

Opgeslagen procedures

lakeflowFixPermissions

Verleent vereiste machtigingen aan gebruikers voor opnamebewerkingen.

Parameters:

Kenmerk Description
@User (NVARCHAR(128)) Verplicht. Gebruikersnaam waaraan machtigingen verleend worden
@Tables (NVARCHAR(MAX)) Optional. Machtigingsbereik op tabelniveau beheren

@Tables parameteropties:

Optie Description
NULL Alleen machtigingen op systeemniveau verlenen (standaard)
'ALL' Machtigingen verlenen aan alle gebruikerstabellen in de database
'SCHEMAS:Schema1,Schema2' Machtigingen verlenen voor alle tabellen in opgegeven schema's
'Schema.Table1,Schema.Table2' Machtigingen verlenen voor specifieke tabellen
Ondersteuning voor jokertekens Voorbeeld: 'Sales.*,HR.Employees'

Wat het doet:

  • Subsidies SELECT voor vereiste systeemweergaven (sys.objects, sys.tables, sys.columnsenzovoort)
  • Subsidies EXECUTE voor door het systeem opgeslagen procedures (sp_tables, sp_columns_100enz.)
  • Verleent SELECT aan gebruikerstabellen op basis van de @Tables parameter, optioneel
  • Behandelt platformspecifieke verschillen (Azure SQL Database, Managed Instance, RDS, On-premises)

lakeflowSetupChangeTracking

Hiermee kunt u wijzigingen bijhouden op database- en tabelniveau met DDL-ondersteuning.

Parameters:

Kenmerk Description
@Tables (NVARCHAR(MAX)) Optional. Tabellen om CT in te schakelen
@User (NVARCHAR(128)) Optional. Gebruiker moet machtigingen verlenen aan
@Retention (NVARCHAR(50)) Optional. CT-bewaarperiode (standaard: '2 DAYS')
@Mode (NVARCHAR(10)) Optional. 'INSTALL' (standaard) of 'CLEANUP'

@Tables parameteropties:

Optie Description
NULL Alleen CT- en DDL-ondersteuning op databaseniveau instellen (geen tabel inschakelen)
'ALL' CT inschakelen voor alle gebruikerstabellen met primaire sleutels
'SCHEMAS:Schema1,Schema2' CT inschakelen voor tabellen in opgegeven schema's
'Schema.Table1,Schema.Table2' CT inschakelen voor specifieke tabellen
Ondersteuning voor jokertekens Voorbeeld: 'Sales.*,HR.Employees'

Wat het doet:

  • Hiermee schakelt u, indien nog niet ingeschakeld, het bijhouden van wijzigingen op databaseniveau in.
  • Hiermee maakt u een DDL-audittabel met versiebeheer (lakeflowDdlAudit_1_2)
  • Hiermee maakt u een DDL-audit-trigger om schemawijzigingen vast te leggen
  • Hiermee schakelt u CT in voor opgegeven tabellen (slaat tabellen zonder primaire sleutels over)
  • Verleent VIEW CHANGE TRACKING machtigingen aan de opgegeven gebruiker
  • CLEANUP modus: DDL-ondersteuningsobjecten verwijderen

Belangrijk gedrag:

  • Hiermee worden tabellen zonder primaire sleutels automatisch overgeslagen (CDC wordt hiervoor aanbevolen)
  • Slimme detectie met de 'ALL' parameter
  • Idempotent: Veilig om meerdere keren te worden uitgevoerd

lakeflowSetupChangeDataCapture

CDC wordt ingeschakeld op database- en tabelniveau, met DDL-ondersteuning en beheer van capture-instanties.

Parameters:

Kenmerk Description
@Tables (NVARCHAR(MAX)) Optional. Tabellen om CDC in te schakelen op
@User (NVARCHAR(128)) Optional. Gebruiker moet machtigingen verlenen aan
@Mode (NVARCHAR(10)) Optional. 'INSTALL' (standaard) of 'CLEANUP'

@Tables parameteropties:

Optie Description
NULL Alleen CDC- en DDL-ondersteuning op databaseniveau instellen
'ALL' CDC inschakelen voor alle gebruikerstabellen
'SCHEMAS:Schema1,Schema2' CDC inschakelen voor tabellen in opgegeven schema's
'Schema.Table1,Schema.Table2' CDC inschakelen voor specifieke tabellen

Wat het doet:

  • Schakelt CDC in op databaseniveau als deze nog niet is ingeschakeld
  • Maakt een traceringstabel voor een vastleg-instantie (lakeflowCaptureInstanceInfo_1_2)
  • Hiermee worden helperprocedures gemaakt voor beheer van vastleginstantie:
    • lakeflowDisableOldCaptureInstance_1_2
    • lakeflowMergeCaptureInstances_1_2
    • lakeflowRefreshCaptureInstance_1_2
  • Hiermee maakt u een ALTER TABLE trigger voor automatische verwerking van schemawijziging
  • Schakelt CDC in op opgegeven tabellen
  • Verleent vereiste CDC-machtigingen aan de opgegeven gebruiker
  • CLEANUP modus: Verwijdert alle CDC DDL-ondersteuningsobjecten

Belangrijk gedrag:

  • Werkt met tabellen met of zonder primaire sleutels
  • Automatisch de rotatie van vastleginstantie afhandelen bij schemawijzigingen
  • Idempotent: Veilig om meerdere keren te worden uitgevoerd

Platformondersteuning

  • Lokaal geïnstalleerde SQL Server (EngineEdition 1-4)
  • Azure SQL Database (EngineEdition 5)
  • Azure SQL Managed Instance (EngineEdition 8)
  • Amazon RDS voor SQL Server (gedetecteerd door servernaampatroon)

Vereiste voorwaarden

  • Gebruiker die het script uitvoert, moet lid zijn van db_owner de rol
  • Voor CT-installatie: Wijzigingen bijhouden moet beschikbaar zijn op het platform
  • Voor CDC-installatie: Change data capture moet beschikbaar zijn op het platform

Installatie-instructies

Het script downloaden en uitvoeren

  1. Download het script: utility_script.sql

  2. Het script uitvoeren

    • Open het gedownloade script in SQL Server Management Studio (SSMS), Azure Data Studio of uw favoriete SQL-client.
    • Maak verbinding met uw SQL Server-exemplaar.
    • Controleer of u bent verbonden met de doeldatabase waar u de hulpprogrammaobjecten wilt installeren.
    • Voer het script uit.
  3. Installatie controleren

    -- Verify installation
    SELECT dbo.lakeflowUtilityVersion_1_1() AS UtilityVersion;
    SELECT dbo.lakeflowDetectPlatform() AS Platform;
    

Alternatief: Uitvoeren met behulp van de opdrachtregel

Als u liever sqlcmd gebruikt:

sqlcmd -S YourServerName -d YourDatabase -E -i lakeflow_utility_objects.sql

Opmerking

Vervang YourServerName en YourDatabase met de werkelijke server- en databasenamen. Gebruik -U username -P password in plaats van -E als u geen Windows-verificatie gebruikt.

Voorbeeld: Machtigingen herstellen (alleen systeem)

-- Grant system permissions only
EXEC dbo.lakeflowFixPermissions
    @User = 'myuser';

Voorbeeld: Machtigingen herstellen (met tabeltoegang)

-- 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';

Voorbeelden: Instelling voor het bijhouden van wijzigingen

Alleen op databaseniveau

-- Setup CT infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = NULL,
    @User = 'myuser';

Inschakelen voor alle tabellen

-- Enable CT on all user tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'ALL',
    @User = 'myuser';

Installatie op basis van schema

-- Enable CT on all tables in specific schemas
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'SCHEMAS:Sales,HR',
    @User = 'myuser',
    @Retention = '3 DAYS';

Specifieke tabellen

-- Enable CT on specific tables
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'dbo.Table1,Sales.Orders,HR.Employees',
    @User = 'myuser';

Voorbeelden: CDC-installatie

Alleen op databaseniveau

-- Setup CDC infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = NULL,
    @User = 'myuser';

Inschakelen voor alle tabellen

-- Enable CDC on all user tables
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'ALL',
    @User = 'myuser';

Specifieke tabellen

-- Enable CDC on specific tables
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'dbo.Table1,Sales.Orders',
    @User = 'myuser';

Voorbeeld: Hybride benadering

-- 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';

Voorbeeld: Opschonen

-- Remove CT DDL support objects
EXEC dbo.lakeflowSetupChangeTracking
    @Mode = 'CLEANUP';

-- Remove CDC DDL support objects
EXEC dbo.lakeflowSetupChangeDataCapture
    @Mode = 'CLEANUP';

DDL-ondersteuningsobjecten gemaakt

De volgende DDL-ondersteuningsobjecten worden gemaakt, afhankelijk van of u wijzigingen bijhouden of CDC gebruikt.

Voor het bijhouden van wijzigingen

Objectsoort Naam Description
Table lakeflowDdlAudit_1_2 Slaat de DDL-wijzigingsgeschiedenis op
Aanleiding lakeflowDdlAuditTrigger_1_2 Legt ALTER TABLE gebeurtenissen vast

Voor CDC

Objectsoort Naam Description
Table lakeflowCaptureInstanceInfo_1_2 Houdt capture-exemplaren bij
Procedure lakeflowDisableOldCaptureInstance_1_2 Hiermee verwijdert u een oud capture-exemplaar
Procedure lakeflowMergeCaptureInstances_1_2 Hiermee worden gegevens samengevoegd tussen instances
Procedure lakeflowRefreshCaptureInstance_1_2 Hiermee maakt u een nieuw capture-exemplaar
Aanleiding lakeflowAlterTableTrigger_1_2 Verwerkt schemawijzigingen

Beperkingen voor het bijhouden van wijzigingen

  • Primaire sleutels vereist: tabellen zonder primaire sleutels kunnen geen wijzigingen bijhouden gebruiken.
  • Het script slaat automatisch tabellen zonder PK's over en raadt aan om in plaats daarvan CDC te gebruiken.

Platformspecifiek gedrag

  • Azure SQL Database: door het systeem opgeslagen procedures zijn standaard toegankelijk (geen EXECUTE subsidies nodig).
  • Server-brede weergaven: Beperkte toegang in Azure SQL Database voor weergaven zoals sys.change_tracking_databases.

Upgradepad

  • Het script verwijdert automatisch alle vorige versies wanneer het wordt uitgevoerd.
  • Versiebeheerschema: objectName_majorVersion_minorVersion
  • Huidige objecten gebruiken _1_1 achtervoegsel voor het bijhouden van versies.

Beste praktijken

  • Voer altijd uit als db_owner of een gebruiker met gelijkwaardige bevoegdheden.
  • Test eerst op databases buiten productie.
  • Gebruik de hybride benadering voor uitgebreide dekking.
  • Voer lakeflowFixPermissions na de installatie uit om de juiste gebruikerstoegang te garanderen.
  • Houd rekening met bewaarperioden op basis van uw opnamefrequentie.

Probleemoplossingsproces

'Gebruiker die dit script uitvoert, is geen lid van de rol 'db_owner'

Oplossing: Uitvoeren als gebruiker met db_owner rol

"Wijzigingen bijhouden is niet ingeschakeld voor catalogus"

Oplossing: SCHAKEL CT in op databaseniveau of laat de procedure automatisch afhandelen

"Het vastleggen van gegevens wijzigen is niet ingeschakeld in de catalogus"

Oplossing: Schakel CDC in op databaseniveau of laat de procedure het automatisch afhandelen

"Tabellen overgeslagen vanwege ontbrekende primaire sleutels"

Oplossing: Gebruik lakeflowSetupChangeDataCapture in plaats daarvan voor deze tabellen

Validatie-integratie

De volgende hulpprogrammaobjecten worden gevalideerd door het Java-validatieframework:

Object Description
SqlServerUtilityObjectsSetupValidator Hiermee wordt de installatie van hulpprogrammaobjecten gevalideerd
SqlServerChangeDataManagementSetupValidator CT/CDC-installatie valideren
SqlServerDdlSupportObjectsSetupValidator DDL-ondersteuningsobjecten valideren
SqlServerPermissionsSetupValidator Hiermee worden machtigingen gevalideerd

Migratienotities

Als u een upgrade uitvoert van oudere versies van DDL-ondersteuningsobjecten (tijdperk van pre-utility-objecten):

  • Met het script worden verouderde objecten automatisch opgeschoond.
  • Handmatig opschonen is niet vereist.
  • Versie 1.1 consolideert alle functionaliteit in geïntegreerde procedures.

Aanvullende bronnen