sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man aktiverar CDC på uppsättning tabeller ELLER aktiverar på alla tabeller i en databas i SQL Server - SQL Server Tutorial

Scenario:

Du arbetar som SQL Server DBA eller utvecklare, du måste skriva skript som du kan använda för att aktivera Change Data Capture (CDC ) på alla tabeller i en databas eller aktivera på vissa specifika tabeller.
Nedanstående skript kan vara används för att aktivera Change Data Capture på alla tabeller i en databas med valda tabeller. Du kan ändra frågan så att den inkluderar eller exkluderar de tabeller du gillar.

/*--------------------------- ----------------------------Aktivera CDC på uppsättning tabeller (För att aktivera CDC på tabell, bör CDC vara aktiverat på databasnivå)- ----------------------------------------------------------* /ANVÄND [Databasnamn]GO
DECLARE @TableName VARCHAR(100)
DECLARE @TableSchema VARCHAR(100)
DECLARE CDC_Cursor CURSOR FOR SELECT * FROM (VÄLJ 'T' AS TableName,'dbo' AS TableSchema UNION ALL SELECT 'T2' AS TableName,'dbo' AS TableSchema --OM du vill aktivera CDC på All Table, använd sedan --SELECT Name,SCHEMA_NAME(schema_id) AS TableSchema --FROM sys.objects --WHERE type ='u' -- OCH is_ms_shipped <> 1 ) CDC
ÖPPNA CDC_Cursor
HÄMTA NÄSTA FRÅN CDC_Cursor INTO @TableName,@TableSchema
--OM CDC redan är aktiverad på tabell , skriv ut meddelande IF @CDC_Status =1 SKRIV UT 'CDC är redan aktiverat på ' +@TableSchema+'.'+@TableName + 'Table' --OM CDC inte är aktiverat på tabell, aktivera CDC och Skriv ut meddelande OM @CDC_Status <> 1 BÖRJA SET @SQL='EXEC sys.sp_cdc_enable_table @source_schema ='''+@TableSchema+''', @source_name =''' + @TableName + ''', @role_name =null; ' EXEC sp_executesql @SQL PRINT 'CDC aktiverad på ' +@TableSchema+'.'+ @TableName + 'Tabell framgångsrikt' AVSLUTA HÄMTA NÄSTA FRÅN CDC_Cursor INTO @TableName,@TableSchema ENDCLOSE CDC_Cursor
DEALLOCATE CDC_Cursor

  1. Hur man skapar och använder MySQL Views

  2. SQL Server-transaktionsloggen, del 2:Loggarkitektur

  3. Generera ett slumpmässigt tal i intervallet 1 - 10

  4. Skillnaden mellan NullIf() och IfNull() i SQLite