sys.fn_cdc_is_bit_set (Transact-SQL)
Gibt an, ob eine aufgezeichnete Spalte aktualisiert wurde, indem geprüft wird, ob ihre Ordnungsposition in einer bereitgestellten Bitmaske festgelegt ist.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
sys.fn_cdc_is_bit_set ( position , update_mask )
Argumente
position
Die Ordnungsposition in der zu überprüfenden Maske. position ist vom Datentyp int.update_mask
Die Maske, die aktualisierte Spalten identifiziert. update_mask ist vom Datentyp varbinary(128).
Rückgabetyp
bit
Hinweise
Diese Funktion wird in der Regel als Teil einer Änderungsdatenabfrage verwendet, um anzuzeigen, ob eine Spalte geändert wurde. In diesem Szenario wird die Funktion sys.fn_cdc_get_column_ordinal vor der Abfrage verwendet, um die erforderliche Spaltenordnungszahl abzurufen. sys.fn_cdc_is_bit_set wird dann auf jede Zeile von abgerufenen Änderungsdaten angewendet und stellt die spaltenspezifischen Informationen als Teil des zurückgegebenen Resultsets bereit.
Die Verwendung dieser Funktion statt der sys.fn_cdc_has_column_changed-Funktion wird empfohlen, wenn bestimmt wird, ob sich Spalten für alle Zeilen eines zurückgegebenen Resultsets geändert haben.
Berechtigungen
Erfordert die Mitgliedschaft in der public-Rolle.
Beispiele
Im folgenden Beispiel wird sys.fn_cdc_is_bit_set verwendet, um dem von der Abfragefunktion cdc.fn_cdc_get_all_changes_HR_Department generierten Resultset die Spalte 'IsGroupNmUpdated' voranzustellen, wobei die vorausberechnete Spaltenordnungszahl und der Wert von __$update_mask als Argumente für den Aufruf verwendet werden.
USE AdventureWorks2012;
GO
DECLARE @from_lsn binary(10), @to_lsn binary(10), @GroupNm_ordinal int;
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');
SET @to_lsn = sys.fn_cdc_get_max_lsn();
SET @GroupNm_ordinal = sys.fn_cdc_get_column_ordinal('HR_Department','GroupName');
SELECT sys.fn_cdc_is_bit_set(@GroupNm_ordinal,__$update_mask) as 'IsGroupNmUpdated', *
FROM cdc.fn_cdc_get_all_changes_HR_Department( @from_lsn, @to_lsn, 'all')
WHERE __$operation = 4;
GO
Siehe auch
Verweis
Change Data Capture-Funktionen (Transact-SQL)
sys.fn_cdc_get_column_ordinal (Transact-SQL)
sys.fn_cdc_has_column_changed (Transact-SQL)
cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)
cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)