Compartir a través de


cdc.fn_cdc_get_all_changes_<capture_instance> (Transact-SQL)

Devuelve una fila para cada cambio aplicado a la tabla de origen dentro del intervalo del número de secuencia de registro (LSN) especificado. Si una fila de origen ha tenido muchos cambios durante el intervalo, cada cambio se representa en el conjunto de resultados devuelto. Además de devolver los datos del cambio, cuatro columnas de metadatos proporcionan la información que necesita aplicar los cambios a otro origen de datos. Las opciones de filtrado de filas rigen el contenido de las columnas de metadatos y de las filas devueltas en el conjunto de resultados. Cuando se especifica la opción de filtro de filas 'all', cada cambio tiene exactamente una fila para identificar el cambio. Cuando se especifica la opción 'all update old', las operaciones de actualización se representan como dos filas: una que contiene los valores de las columnas capturadas antes de la actualización y otra que contiene los valores de las columnas capturadas después de la actualización.

Esta función de enumeración se crea cuando se habilita una tabla de origen para la captura de datos modificados. El nombre de función usa y se obtiene del formato **cdc.fn_cdc_get_all_changes_**capture_instance, donde capture_instance es el valor especificado para la instancia de captura cuando la tabla de origen se habilitó para la captura de datos modificados.

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

Sintaxis

cdc.fn_cdc_get_all_changes_capture_instance ( from_lsn , to_lsn , '<row_filter_option>' )

<row_filter_option> ::=
{ all
 | all update old
}

Argumentos

  • from_lsn
    El valor LSN que representa el extremo inferior del intervalo de LSN que se incluirá en el conjunto de resultados. from_lsn es de tipo binary(10).

    Solo se incluirán en el conjunto de resultados las filas de la tabla de cambios cdc.[capture_instance]_CT con un valor en __$start_lsn mayor o igual que from_lsn.

  • to_lsn
    El valor LSN que representa el extremo inferior del intervalo de LSN que se incluirá en el conjunto de resultados. to_lsn es de tipo binary(10).

    Solo se incluirán en el conjunto de resultados las filas de la tabla de cambios cdc.[capture_instance]_CT con un valor en __$start_lsn menor o igual que from_lsn o igual a to_lsn .

  • <row_filter_option> ::= { all | all update old }
    Una opción que rige el contenido de las columnas de metadatos y las filas devueltas en el conjunto de resultados.

    Puede ser una de las siguientes opciones:

    • all
      Devuelve todos los cambios dentro del intervalo LSN especificado. Para los cambios debidos a una operación de actualización, esta opción devuelve sólo la fila que contiene los nuevos valores una vez aplicada la actualización.

    • all update old
      Devuelve todos los cambios dentro del intervalo LSN especificado. Para los cambios debidos a una operación de actualización, esta opción devuelve tanto la fila que contiene los nuevos valores antes de la actualización como la fila que contiene los valores de columna después de la actualización.

Tabla devuelta

Nombre de columna

Tipo de datos

Descripción

__$start_lsn

binary(10)

LSN de confirmación asociado con el cambio que conserva el orden de confirmación del cambio. Los cambios confirmados en la misma transacción comparten el mismo valor LSN de confirmación.

__$seqval

binary(10)

Valor de secuencia utilizado para ordenar los cambios en una fila dentro de una transacción.

__$operation

int

Identifica la operación del lenguaje de manipulación de datos (DML) necesaria para aplicar la fila de datos modificados al origen de datos de destino. Puede ser uno de los siguientes elementos:

1 = eliminar

2 = insertar

3 = actualización (los valores de columna capturados son los de antes de la operación de actualización). Este valor solamente se aplica cuando se especifica la opción de filtro de filas 'all update old'.

4 = actualización (los valores de columna capturados son los de después de la operación de actualización)

__$update_mask

varbinary(128)

Máscara de bits con un bit que corresponde a cada columna capturada identificada para la instancia de captura. Este valor tiene todos los bits definidos establecidos en 1 si __$operation = 1 o 2. Si __$operation = 3 o 4, sólo los bits que corresponden a columnas que han cambiado se establecen en 1.

<columnas de tabla de origen capturadas>

varía

Las columnas restantes devueltas por la función son las columnas capturadas identificadas cuando se creó la instancia de captura. Si no se especificó ninguna columna en la lista de columnas capturadas, se devuelven todas las columnas de la tabla de origen.

Permisos

Debe pertenecer a la función fija de servidor sysadmin o a la función fija de base de datos db_owner. Para el resto de usuarios, requiere el permiso SELECT en todas las columnas capturadas en la tabla de origen y, si se ha definido una función de puerta de enlace para la instancia de captura, la pertenencia a esa función de base de datos. Cuando el autor de las llamadas no tiene permiso para ver los datos de origen, la función devuelve el error 229 ("Se denegó el permiso SELECT en el objeto 'fn_cdc_get_all_changes_... ', base de datos '<NombreDeBaseDeDatos>', esquema 'cdc'".).

Notas

Si el intervalo de LSN especificado no cae dentro de la escala de tiempo del seguimiento de cambios de la instancia de captura, la función devuelve el error 208 ("Se ha especificado un número insuficiente de argumentos para el procedimiento o la función cdc.fn_cdc_get_all_changes".).

A las columnas del tipo de datos image, text y ntext siempre se les asigna un valor NULL cuando __$operation = 1 o __$operation = 3. A las columnas del tipo de datos varbinary(max), varchar(max) o nvarchar(max) se les asigna un valor NULL cuando __$operation = 3, a menos que la columna cambie durante la actualización. Cuando __$operation = 1, a estas columnas se les asigna su valor en el momento de la eliminación. Las columnas calculadas que están incluidas en una instancia de captura siempre tienen el valor NULL.

Ejemplos

Hay varias plantillas SQL Server Management Studio que muestran cómo utilizar las funciones de consulta de captura de datos modificados. Estas plantillas están disponibles en el menú Ver en Management Studio. Para obtener más información, vea Usar las plantillas de SQL Server Management Studio.

Este ejemplo muestra la Enumerate All Changes for Valid Range Template. Utiliza la función cdc.fn_cdc_get_all_changes_HR_Department para notificar todos los cambios disponibles actualmente para la instancia de captura HR_Department, que se define para la tabla de origen HumanResources.Department de la base de datos AdventureWorks.

-- ==================================================
-- Enumerate All Changes for Valid Range Template
-- ==================================================
USE AdventureWorks
GO

DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
   sys.fn_cdc_get_min_lsn('HR_Department')
SET @to_lsn   = sys.fn_cdc_get_max_lsn()
SELECT * FROM cdc.fn_cdc_get_all_changes_HR_Department
  (@from_lsn, @to_lsn, N'all')
GO