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 la 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 está habilitada para la captura de datos modificados.
Convenciones 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 rango 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 rango 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 solo 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, solo 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 al rol fijo de servidor sysadmin o al rol fijo 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 un rol de acceso para la instancia de captura, la pertenencia a ese rol 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'".).
Comentarios
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 Explorador de plantillas.
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 AdventureWorks2012 .
-- ==================================================
-- Enumerate All Changes for Valid Range Template
-- ==================================================
USE AdventureWorks2012;
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
Vea también
Referencia
cdc.fn_cdc_get_net_changes_<capture_instance> (Transact-SQL)
sys.fn_cdc_map_time_to_lsn (Transact-SQL)
sys.sp_cdc_get_ddl_history (Transact-SQL)
sys.sp_cdc_get_captured_columns (Transact-SQL)
sys.sp_cdc_help_change_data_capture (Transact-SQL)