sys.fn_net_changes_<capture_instance> (Transact-SQL)
Si applica a: SQL Server
Wrapper per le funzioni di query net changes . Gli script necessari per creare queste funzioni vengono generati dalla sys.sp_cdc_generate_wrapper_function
stored procedure. Per altre informazioni sulla stored procedure usata per creare sys.fn_net_changes_<capture_instance>
, vedere sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Convenzioni relative alla sintassi Transact-SQL
Sintassi
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )
<capture_instance> ::= The name of the capture instance.
<row_filter_option> ::=
{ all
| all with mask
| all with merge
}
Argomenti
start_time
Valore datetime che rappresenta l'endpoint basso dell'intervallo di voci della tabella delle modifiche da includere nel set di risultati.
Nel set di risultati vengono incluse solo le righe della cdc.<capture_instance>_CT
tabella delle modifiche con un tempo di commit associato strettamente maggiore di start_time .
Se viene fornito un valore NULL per questo argomento, l'endpoint inferiore dell'intervallo della query corrisponderà all'endpoint inferiore dell'intervallo valido per l'istanza di acquisizione.
Se il valore del parametro @start_time o @end_time supera il tempo dell'LSN più basso o dell'LSN più alto, l'esecuzione di funzioni wrapper generate 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.
end_time
Valore datetime che rappresenta l'endpoint elevato dell'intervallo di voci della tabella delle modifiche da includere nel set di risultati.
Questo parametro può assumere uno dei due significati, a seconda del valore scelto per quando sys.sp_cdc_generate_wrapper_function
viene chiamato per @closed_high_end_point generare lo script per creare la funzione wrapper:
@closed_high_end_point = 1
Nel set di risultati vengono incluse solo le righe della
cdc.<capture_instance>_CT
tabella delle modifiche con un valore in __$start_lsn e un'ora di commit corrispondente minore o uguale a start_time .@closed_high_end_point = 0
Nel set di risultati vengono incluse solo le righe della
cdc.<capture_instance>_CT
tabella delle modifiche con un valore in __$start_lsn e un'ora di commit corrispondente rigorosamente inferiore a start_time .
Se viene fornito un valore NULL per questo argomento, l'endpoint superiore dell'intervallo della query corrisponderà all'endpoint superiore dell'intervallo valido per l'istanza di acquisizione.
Se il valore del parametro @start_time o @end_time supera il tempo dell'LSN più basso o dell'LSN più alto, l'esecuzione di funzioni wrapper generate 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.
<> row_filter_option ::= { all | all with mask | all with merge }
Opzione applicata al contenuto delle colonne dei metadati e alle righe restituite nel set di risultati. Le opzioni possibili sono le seguenti:
tutto
Restituisce il contenuto finale di una riga modificata nelle colonne di contenuto e l'operazione necessaria per applicare la riga nella colonna di metadati __CDC_OPERATION.
all with mask
Restituisce il contenuto finale di tutte le colonne modificate nelle colonne di contenuto e l'operazione necessaria per applicare ciascuna riga nella colonna di metadati __CDC_OPERATION. Se è stato specificato un elenco di flag di aggiornamento al momento della generazione dello script di creazione della funzione wrapper, questa opzione è necessaria per popolare la maschera di aggiornamento.
all with merge
Restituisce il contenuto finale di tutte le righe modificate nelle colonne di contenuto.
I due possibili valori per la colonna __CDC_OPERATION sono i seguenti:
D, se la riga deve essere eliminata.
M, se la riga deve essere inserita o aggiornata.
La logica per determinare se è necessaria un'operazione di inserimento o di aggiornamento per applicare una modifica alla destinazione aggiunge maggiore complessità alla query. Utilizzare questa opzione per ottenere prestazioni ottimali quando non è necessario distinguere tra le operazioni di inserimento e aggiornamento. Questo approccio funziona meglio negli ambienti di destinazione in cui un'operazione di unione è disponibile direttamente.
Tabella restituita
Nome colonna | Tipo di colonna | Descrizione |
---|---|---|
<colonne da @column_list> | variabile | Colonne identificate nell'argomento column_list a sp_cdc_generate_wrapper_function quando viene chiamato per generare lo script per creare il wrapper. Se column_list è NULL, tutte le colonne di origine rilevate verranno visualizzate nel set di risultati. |
__CDC_OPERATION | nvarchar(2) | Codice operativo che indica che l'operazione è necessaria per applicare la riga all'ambiente di destinazione. L'operazione varia in base al valore dell'argomento row_filter_option fornito nella chiamata seguente: row_filter_option = 'all' , 'all with mask' 'D' - operazione di eliminazione 'I' - operazione di inserimento 'UN' - operazione di aggiornamento row_filter_option = 'all with merge' 'D' - operazione di eliminazione 'M' - operazione di inserimento oppure di aggiornamento |
<colonne da @update_flag_list> | bit | Flag di bit denominato aggiungendo _uflag al nome della colonna. Il flag assume un valore non NULL solo quando row_filter_option = 'all with mask' e __CDC_OPERATION = 'UN'. È impostato su 1 se la colonna corrispondente è stata modificata all'interno della finestra di query. Altrimenti, è impostato su 0. |
Osservazioni:
La fn_net_changes_<capture_instance>
funzione funge da wrapper per la cdc.fn_cdc_get_net_changes_<capture_instance>
funzione di query. La sys.sp_cdc_generate_wrapper
stored procedure viene usata per creare lo script per il wrapper.
Le funzioni wrapper non vengono create automaticamente. Per creare le funzioni wrapper, è necessario eseguire due operazioni:
Eseguire la stored procedure per generare lo script di creazione del wrapper.
Eseguire lo script per creare effettivamente la funzione wrapper.
Le funzioni wrapper consentono agli utenti di eseguire sistematicamente query sulle modifiche che si sono verificate entro un intervallo delimitato da valori datetime anziché da valori LSN. Le funzioni wrapper eseguono tutte le conversioni necessarie tra i valori datetime specificati e i valori LSN necessari internamente come argomenti per le funzioni di query. Quando le funzioni wrapper vengono usate serialmente per elaborare un flusso di dati delle modifiche, assicurano che nessun dato venga perso o ripetuto purché venga seguita la convenzione seguente: il @end_time valore dell'intervallo associato a una chiamata viene fornito come valore per l'intervallo @start_time associato alla chiamata successiva.
Utilizzando il parametro @closed_high_end_point durante la creazione dello script, è possibile generare wrapper per supportare un limite superiore chiuso o un limite superiore aperto nella finestra della query specificata, ovvero è possibile decidere se le voci che dispongono di un'ora di commit uguale al limite superiore dell'intervallo di estrazione devono essere incluse nell'intervallo. Per impostazione predefinita, il limite superiore è incluso.
Il set di risultati restituito dalla funzione wrapper net changes restituisce solo le colonne rilevate presenti in @column_list quando è stato generato il wrapper. Se @column_list è NULL, vengono restituite tutte le colonne di origine rilevate. Le colonne di origine sono seguite dalla colonna __CDC_OPERATION, una colonna di uno o due caratteri che identifica l'operazione.
I flag di bit vengono quindi aggiunti al set di risultati per ogni colonna identificata nel parametro @update_flag_list. Per il wrapper net changes , i flag di bit saranno sempre NULL se l'oggetto @row_filter_option usato nella chiamata alla funzione wrapper è 'all' o 'all with merge'. @row_filter_option Se è impostato su 'all with mask' e __CDC_OPERATION è 'D' o 'I', anche il valore del flag sarà NULL. Se __CDC_OPERATION è "UN", il flag verrà impostato su 1 o 0, a seconda che l'operazione di aggiornamento netto abbia causato una modifica alla colonna.
Il modello di configurazione change data capture 'Instantiate CDC Wrapper TVFs for Schema' illustra come usare la sp_cdc_generate_wrapper_function
stored procedure per ottenere script CREATE per tutte le funzioni wrapper per le funzioni di query definite da uno schema. Il modello crea quindi tali script. Per altre informazioni sui modelli, vedere Esplora modelli.
Le funzioni sys.fn_all_changes_<capture_instance>
wrapper e sys.fn_net_changes_<capture_instance>
dipendono dalle funzioni cdc.fn_cdc_get_all_changes_<capture_instance>
di sistema e cdc.fn_cdc_get_net_changes_<capture_instance>
. 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.