Share via


sys.fn_cdc_is_bit_set (Transact-SQL)

Indica si se ha actualizado una columna capturada comprobando si su posición ordinal está dentro de una máscara de bits proporcionada.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sys.fn_cdc_is_bit_set ( position , update_mask )

Argumentos

  • position
    Es la posición ordinal en la máscara que hay que comprobar. position es de tipo int.

  • update_mask
    Es la máscara que identifica las columnas actualizadas. update_mask es de tipo varbinary(128).

Tipo devuelto

bit

Comentarios

Esta función se utiliza normalmente como parte de una consulta de datos modificados para indicar si una columna ha cambiado. En este escenario, la función sys.fn_cdc_get_column_ordinal se utiliza antes de la consulta para obtener el ordinal de la columna necesario. A continuación, se aplica sys.fn_cdc_is_bit_set a cada fila de datos modificados que se devuelve, y proporciona la información específica de la columna como parte del conjunto de resultados devuelto.

Se recomienda usar esta función en lugar de la función sys.fn_cdc_has_column_changed para determinar si las columnas han cambiado en todas las filas de un conjunto de resultados devuelto.

Permisos

Debe pertenecer al rol public.

Ejemplos

El ejemplo siguiente usa sys.fn_cdc_is_bit_set para anteponer al conjunto de resultados generado por la función de consultacdc.fn_cdc_get_all_changes_HR_Department la columna 'IsGroupNmUpdated' que usa el ordinal de la columna precalculado y el valor de __$update_mask como argumentos de la llamada.

USE AdventureWorks2008R2;
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