sys.fn_cdc_increment_lsn (Transact-SQL)

Si applica a:SQL Server

Restituisce il successivo numero di sequenza del file di log (LSN) nella sequenza basata sul numero LSN specificato.

Convenzioni di sintassi Transact-SQL

Sintassi

  
sys.fn_cdc_increment_lsn ( lsn_value )  

Argomenti

lsn_value

Valore LSN. lsn_value è binary(10).

Tipo restituito

binary(10)

Osservazioni:

Il valore LSN restituito dalla funzione è sempre maggiore del valore specificato e non esiste alcun valore LSN tra i due valori.

Per eseguire sistematicamente query su un flusso di dati delle modifiche, è possibile ripetere periodicamente la chiamata della funzione di query, specificando ogni volta un nuovo intervallo di query per delimitare le modifiche restituite nella query. Per assicurarsi che non si verifichino perdite di dati, il limite superiore della query precedente viene spesso utilizzato per generare il limite inferiore della query successiva. Poiché l'intervallo di query è un intervallo chiuso, il nuovo limite inferiore deve essere più grande del limite superiore precedente, ma piccolo abbastanza da garantire che nessuna modifica abbia valori LSN compresi tra questo valore e il limite superiore precedente. La funzione sys.fn_cdc_increment_lsn viene usata per ottenere questo valore.

Autorizzazioni

Richiede l'appartenenza al ruolo del database pubblico .

Esempi

Nell'esempio seguente viene utilizzato sys.fn_cdc_increment_lsn al fine di generare un nuovo valore di limite inferiore per una query di acquisizione di dati delle modifiche basata sul limite superiore salvato da una precedente query e salvato nella variabile @save_to_lsn.

USE AdventureWorks2022;  
GO  
DECLARE @from_lsn binary(10), @to_lsn binary(10), @save_to_lsn binary(10);  
SET @save_to_lsn = <previous_upper_bound_value>;  
SET @from_lsn = sys.fn_cdc_increment_lsn(@save_to_lsn);  
SET @to_lsn = sys.fn_cdc_get_max_lsn();  
SELECT * from cdc.fn_cdc_get_all_changes_HumanResources_Employee( @from_lsn, @to_lsn, 'all' );  
GO  

Nota

L'errore 313 è previsto se l'intervallo LSN specificato non è appropriato quando si chiama cdc.fn_cdc_get_all_changes_<capture_instance> o cdc.fn_cdc_get_net_changes_<capture_instance>. Se il lsn_value parametro supera il tempo di LSN minimo o LSN più alto, l'esecuzione di queste funzioni restituirà l'errore 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. Questo errore deve essere gestito dallo sviluppatore. L'esempio di T-SQL per una soluzione alternativa è disponibile in ReplTalk su GitHub.

Vedi anche