Sto cercando di ottenere le modifiche nette sulla tabella abilitata CDC passando le date Min e Max. Ma sta lanciando sotto l'errore.Errori di acquisizione dati di modifica
Msg 313, Level 16, State 3, Line 24
An insufficient number of arguments were supplied for the procedure or function cdc.fn_cdc_get_net_changes_ ... .
Il mio codice è il seguente:
DECLARE @CDate DATE = '2013-03-18' --This is the date after the CDC was enabled on the table
DECLARE @count INT;
DECLARE @lsnStartDatetime DATETIME;
DECLARE @lsnEndDateTime DATETIME;
DECLARE @begin_time DATETIME ,
@end_time DATETIME ,
@from_lsn BINARY(10) ,
@to_lsn BINARY(10);
SELECT @lsnStartDatetime = CAST(CAST(@CDate AS NVARCHAR(10)) + ' 00:00:00' AS DATETIME)
SELECT @lsnEndDateTime = CAST(CAST(@CDate AS NVARCHAR(10)) + ' 23:59:59' AS DATETIME)
SET @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than or equal',
@lsnStartDatetime);
SET @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal',
@lsnEndDateTime);
if exists (select * from sys.objects where name = 'EmployeeCDCbyDate' and type = 'u')
drop table etl.EmployeeCDCbyDate
SELECT *
FROM cdc.fn_cdc_get_net_changes_employee(@from_lsn, @to_lsn, N'all')
E 'il from_lsn e to_lsn ottenendo da partita pretende molto sys.fn_cdc_map_time_to_lsn con è mappato aginst tabella cdc 'dipendente'
Sotto opere di codice bene; ma ottiene tutte le modifiche nette da min max lsn's.
DECLARE @min_lsn BINARY(10) = sys.fn_cdc_get_min_lsn ('employee')
DECLARE @max_lsn BINARY(10) = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_net_changes_employee(@min_lsn, @max_lsn, 'all') ORDER BY 1 desc
cosa ho bisogno è di ottenere min e max lsn di esempio CDC per certa data e ottenere le variazioni nette per quella data. Qualche indizio?
Edit:
Questo funziona bene con il primo tavolo quando permetto sul mazzo di tabelle.
Es:
USE ERP
EXEC sys.sp_cdc_disable_db
EXEC sys.sp_cdc_enable_db
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo',
@source_name = N'Employee',
@capture_instance = 'Employee',
@supports_net_changes =1,
@role_name = NULL
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo',
@source_name = N'StoreListing',
@capture_instance = 'StoreListing',
@supports_net_changes =1,
@role_name = NULL
Go
Questo funziona bene con la tabella Employee. Se cambio l'ordine in cui sono abilitati al CDC (se metto prima l'elenco degli archivi e il dipendente successivo), allora funziona bene con l'elenco dei dipendenti.
Coloro tutto su MSDN forum e su Connect sono stati i miei post però :-) . Sto cercando se qualcuno ha trovato un modo alternativo per farlo. – Sreedhar
Ci scusiamo per questo. Avrei dovuto confrontare il codice. Quel codice in Modifica, che funziona per la prima tabella, funziona per altre tabelle? – Stoleg