<sys.fn_net_changes_capture_instance> (Transact-SQL)
Se aplica a: SQL Server
Contenedores para las funciones de consulta de cambios netos. 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 que se usa para crear sys.fn_net_changes_<capture_instance>
, vea sys.sp_cdc_generate_wrapper_function (Transact-SQL).
Convenciones de sintaxis de Transact-SQL
Sintaxis
fn_net_changes_<capture_instance> ('start_time', 'end_time', '<row_filter_option>' )
<capture_instance> ::= The name of the capture instance.
<row_filter_option> ::=
{ all
| all with mask
| all with merge
}
Argumentos
start_time
Valor datetime que representa el punto de conexión bajo del intervalo de entradas de 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 estrictamente 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 tabla de cambios que se van a incluir en el conjunto de resultados.
Este parámetro puede tomar uno de los dos significados, según el valor elegido para @closed_high_end_point cuando sys.sp_cdc_generate_wrapper_function
se llame a para generar el script para crear la función contenedora:
@closed_high_end_point = 1
Solo las filas de la
cdc.<capture_instance>_CT
tabla de cambios que tienen un valor en __$start_lsn y un tiempo de confirmación correspondiente menor o igual que start_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 valor en __$start_lsn y un tiempo de confirmación correspondiente estrictamente menor que start_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 with mask | all with merge }
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 el contenido final de una fila cambiada en las columnas de contenido y la operación que se necesita para aplicar la fila en la columna de metadatos __CDC_OPERATION.
all with mask
Devuelve el contenido final de todas las filas cambiadas en las columnas de contenido y la operación necesaria para aplicar cada fila en la columna de metadatos __CDC_OPERATION. Si se especificó una lista de marcas de actualización al generar el script para crear la función contenedora, esta opción es necesaria para rellenar la máscara de actualización.
todos con combinación
Devuelve el contenido final de todas las filas cambiadas en las columnas de contenido.
La columna __CDC_OPERATION contendrá uno de los dos valores siguientes:
D, si se debe eliminar la fila.
M, si la fila se debe insertar o actualizar.
La lógica para determinar si se requiere una operación de inserción o actualización para aplicar un cambio al destino agrega complejidad a la consulta. Utilice esta opción para mejorar el rendimiento cuando no sea necesario diferenciar entre operaciones de inserción y actualización. Este enfoque funciona mejor en entornos de destino en los que una operación de combinación está disponible directamente.
Tabla devuelta
Nombre de la columna | Tipo de columna | Descripción |
---|---|---|
<columnas de @column_list> | varía | Las columnas identificadas en el argumento column_list al sp_cdc_generate_wrapper_function al que se llama para generar el script para crear el contenedor. Si column_list es NULL, todas las columnas de origen con seguimiento aparecerán en el conjunto de resultados. |
__CDC_OPERATION | nvarchar(2) | Código de operación que indica qué operación es necesaria para aplicar la fila al entorno de destino. La operación variará en función del valor del argumento row_filter_option proporcionado en la siguiente llamada: row_filter_option = "all", "all with mask" 'D' - operación de eliminación 'I' - operación de inserción 'UN' - operación de actualización row_filter_option = "all with merge" 'D' - operación de eliminación 'M' - operación de inserción o de actualización |
<columnas de @update_flag_list> | bit | Marca de bits que se denomina anexando _uflag al nombre de columna. La marca toma un valor distinto de NULL solo cuando row_filter_option = "all with mask" y __CDC_OPERATION = "UN". Se establece en 1 si la columna correspondiente se modificó dentro de la ventana de consulta. De lo contrario, es 0. |
Comentarios
La fn_net_changes_<capture_instance>
función actúa como contenedor para la función de cdc.fn_cdc_get_net_changes_<capture_instance>
consulta. El sys.sp_cdc_generate_wrapper
procedimiento almacenado se usa para crear el script para el contenedor.
Las funciones contenedoras no se crean automáticamente. Para crear funciones contenedoras hay que seguir dos pasos:
Ejecutar el procedimiento almacenado para generar el script que permite crear el contenedor.
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 una secuencia de datos modificados, garantizan que no se pierdan ni repitan los 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 net changes devuelve solo las columnas con seguimiento que se encontraban en cuando @column_list se generó el contenedor. Si @column_list es NULL, se devuelven todas las columnas de origen sometidas a 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 net changes , las marcas de bits siempre serán NULL si la @row_filter_option clase que se usa en la llamada a la función contenedora es "all" o "all with merge". Si se establece en @row_filter_option "todo con máscara" y __CDC_OPERATION es "D" o "I", el valor de la marca también será NULL. Si __CDC_OPERATION es "UN", la marca se establecerá en 1 o 0, en función de si la operación de actualización neta provocó un cambio en la columna.
La plantilla de configuración de captura de datos modificados "Creación de instancias de TVF de 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 de 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 supera el 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.