Freigeben über


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.

Themenlink (Symbol)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 sys.fn_cdc_get_column_ordinal-Funktion vor der Abfrage verwendet, um die erforderliche Ordnungszahl der Spalte abzurufen. Anschließend wird sys.fn_cdc_is_bit_set auf jede Zeile der Änderungsdaten angewendet, die zurückgegeben wird, wobei die spaltenspezifischen Informationen Teil des zurückgegebenen Resultsets sind.

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 AdventureWorks;
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