Compartir por


<sys.fn_all_changes_capture_instance> (Transact-SQL)

Se aplica a:SQL Server

Contenedores para todas las funciones de consulta de cambios . El procedimiento almacenado genera sys.sp_cdc_generate_wrapper_function los scripts necesarios para crear estas funciones. Para obtener más información sobre el procedimiento almacenado usado para crear sys.fn_all_changes_<capture_instance>, vea sys.sp_cdc_generate_wrapper_function (Transact-SQL).

Convenciones de sintaxis de Transact-SQL

Sintaxis

fn_all_changes_<capture_instance> ('start_time' ,'end_time', '<row_filter_option>' )  
  
<capture_instance> ::= The name of the capture instance.  
<row_filter_option> ::=  
{ all  
  | all update old  
}  

Argumentos

start_time

Valor datetime que representa el extremo inferior del intervalo de entradas de la tabla de cambios que se van a incluir en el conjunto de resultados.

Solo las filas de la cdc.<capture_instance>_CT tabla de cambios que tienen un tiempo de confirmación asociado mayor que start_time se incluyen en el conjunto de resultados.

Si se proporciona un valor NULL para este argumento, el extremo inferior del intervalo de consulta se corresponderá con el extremo inferior del intervalo válido de la instancia de captura.

Si el valor del parámetro @start_time o @end_time supera la hora del LSN más bajo o más alto, la ejecución de las funciones de contenedor generadas devolverá el error 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. El desarrollador debe controlar este error.

end_time

Valor datetime que representa el extremo alto del intervalo de entradas de la tabla de cambios que se van a incluir en el conjunto de resultados.

Este parámetro puede tomar uno de los dos significados posibles en función del valor elegido para @closed_high_end_point cuando sys.sp_cdc_generate_wrapper_function se llame a para generar el script de creación para la función contenedora:

  • @closed_high_end_point = 1

    Solo las filas de la cdc.<capture_instance>_CT tabla de cambios que tienen un tiempo de confirmación asociado menor o igual que end_time se incluyen en el conjunto de resultados.

  • @closed_high_end_point = 0

    Solo las filas de la cdc.capture_instance_CT tabla de cambios que tienen un tiempo de confirmación asociado estrictamente menor que end_time se incluyen en el conjunto de resultados.

Si se proporciona un valor NULL para este argumento, el extremo superior del intervalo de consulta se corresponderá con el extremo superior del intervalo válido de la instancia de captura.

Si el valor del parámetro @start_time o @end_time supera la hora del LSN más bajo o más alto, la ejecución de las funciones de contenedor generadas devolverá el error 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. El desarrollador debe controlar este error.

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

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:

todo
Devuelve todos los cambios dentro del intervalo LSN especificado. Para los cambios que se producen debido a una operación de actualización, esta opción devuelve solo la fila que contiene los valores nuevos una vez aplicada la actualización.

all update old
Devuelve todos los cambios dentro del intervalo LSN especificado. Para los cambios que se producen debido a una operación de actualización, esta opción devuelve las filas que contienen los valores de columna antes y después de la actualización.

Tabla devuelta

Nombre de la columna Tipo de columna Descripción
__CDC_STARTLSN binary(10) LSN de confirmación de la transacción que se asocia al cambio. Todos los cambios que se confirman en la misma transacción comparten el mismo LSN de confirmación.
__CDC_SEQVAL binary(10) Valor de secuencia que se usa para ordenar los cambios de fila en una transacción.
<columnas de @column_list> varía Columnas identificadas en el argumento column_list a sp_cdc_generate_wrapper_function cuando se llama a para generar el script que crea la función contenedora.
__CDC_OPERATION nvarchar(2) Código de operación que indica qué operación hay que aplicar a la fila en el entorno de destino. Variará en función del valor del argumento row_filter_option proporcionado en la llamada:

row_filter_option = 'all'

'D' - operación de eliminación

'I' - operación de inserción

'UN' - valores nuevos de la operación de actualización

row_filter_option = "todas las actualizaciones antiguas"

'D' - operación de eliminación

'I' - operación de inserción

'UN' - valores nuevos de la operación de actualización

'UO' - valores anteriores de la operación de actualización
<columnas de @update_flag_list> bit Una marca de bits se denomina anexando _uflag al nombre de columna. La marca siempre se establece en NULL cuando __CDC_OPERATION es 'D', 'I', de 'UO'. Cuando __CDC_OPERATION es 'UN', se establece en 1 si la actualización generó un cambio en la columna correspondiente. De lo contrario, es 0.

Comentarios

La fn_all_changes_<capture_instance> función actúa como contenedor para la cdc.fn_cdc_get_all_changes_<capture_instance> función de consulta. El sys.sp_cdc_generate_wrapper procedimiento almacenado se usa para generar el script para crear el contenedor.

Las funciones contenedoras no se crean automáticamente. Para crear funciones contenedoras hay que seguir dos pasos:

  1. Ejecutar el procedimiento almacenado para generar el script que permite crear el contenedor.

  2. Ejecutar el script para crear realmente la función contenedora.

Las funciones contenedoras permiten a los usuarios consultar sistemáticamente los cambios que se produjeron en un intervalo limitado por valores datetime en lugar de por valores LSN. Las funciones contenedoras realizan todas las conversiones necesarias entre los valores datetime proporcionados y los valores LSN necesarios internamente como argumentos para las funciones de consulta. Cuando las funciones contenedoras se usan en serie para procesar un flujo de datos modificados, garantizan que no se pierdan ni repitan datos siempre que se siga la siguiente convención: el @end_time valor del intervalo asociado a una llamada se proporciona como valor @start_time para el intervalo asociado a la llamada posterior.

Si se usa el parámetro @closed_high_end_point al crear el script, se pueden generar contenedores para admitir un límite superior cerrado o un límite superior abierto en la ventana de consulta especificada. Es decir, puede decidir si las entradas que tienen un tiempo de confirmación igual al límite superior del intervalo de extracción se incluirán en el intervalo. De forma predeterminada, se incluye el límite superior.

El conjunto de resultados devuelto por la función contenedora de todos los cambios devuelve las columnas __$start_lsn y __$seqval de la tabla de cambios como columnas __CDC_STARTLSN y __CDC_SEQVAL, respectivamente. Sigue estas con solo las columnas con seguimiento que aparecieron en el parámetro @column_list cuando se generó el contenedor. Si @column_list es NULL, se devuelven todas las columnas de origen con seguimiento. Las columnas de origen van seguidas de una columna de operación, __CDC_OPERATION, que es una columna de uno o dos caracteres que identifica la operación.

A continuación, las marcas de bits se anexan al conjunto de resultados para cada columna que se identifica en el parámetro @update_flag_list. Para el contenedor de todos los cambios , las marcas de bits siempre serán NULL si __CDC_OPERATION es "D", "I" o "UO". Si __CDC_OPERATION es 'UN', la marca se establecerá en 1 ó 0, dependiendo de si la operación de actualización produjo un cambio en la columna.

La plantilla de configuración de captura de datos modificados "Creación de instancias de TVFs contenedor CDC para esquema" muestra cómo usar el sp_cdc_generate_wrapper_function procedimiento almacenado para obtener scripts CREATE para todas las funciones contenedoras para las funciones de consulta definidas de un esquema. A continuación, la plantilla crea esos scripts. Para obtener más información sobre las plantillas, vea Explorador de plantillas.

Las funciones sys.fn_all_changes_<capture_instance> contenedoras y sys.fn_net_changes_<capture_instance> dependen de las funciones cdc.fn_cdc_get_all_changes_<capture_instance> del sistema y cdc.fn_cdc_get_net_changes_<capture_instance>. Se espera el error 313 si el intervalo LSN proporcionado no es adecuado al llamar a cdc.fn_cdc_get_all_changes_<capture_instance> o cdc.fn_cdc_get_net_changes_<capture_instance>. Si el lsn_value parámetro está fuera del tiempo de LSN más bajo o LSN más alto, la ejecución de estas funciones devolverá el error 313: Msg 313, Level 16, State 3, Line 1 An insufficient number of arguments were supplied for the procedure or function. El desarrollador debe controlar este error. Puede encontrar un ejemplo de T-SQL para una solución alternativa en ReplTalk en GitHub.

Consulte también