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 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)

Konzepte

Über Change Data Capture (SQL Server)