Se aplica aSQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Síntomas

Al ejecutar una actualización en una tabla que tiene un índice agrupado o único y la actualización se produce en una columna única no principal, el registro de seguimiento de cambios es incoherente con la instrucción update.

Por ejemplo, suponga que una columna denominada "columna1" se incluye en el índice agrupado o único. Cuando se cambia el valor de la columna de mayor a menor (como cambiar el valor de 20 a 16), la tabla lateral de seguimiento de cambios recibe la operación de inserción antes de la operación de eliminación. Por ejemplo, la operación insertar registro de fila del registro de transacciones se recibe antes de la operación eliminar fila, o "I" se inserta antes de "D".

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1116

19

I

NULL

NULL

5639485628

1116

20

D

NULL

NULL

5639485628

Cuando el valor de la columna cambia de menor a mayor (como cambiar el valor de 16 a 20), se inserta "D" antes de "I".

Sys_change_version

sys_change_create_version

sys_change_operation

sys_change_column

sys_change_context

PK_column

1126

32

D

NULL

NULL

5639485628

1126

33

I

NULL

NULL

5639485628

Causa

Este problema se produce debido a un orden incorrecto entre pares de eliminación e inserción en la tabla lateral de seguimiento de cambios.

Solución

La corrección para este problema se incluye en las siguientes actualizaciones de SQL Server:

         Actualización acumulativa 8 de SQL Server 2017

         Actualización acumulativa 9 de SQL Server 2016 Service Pack 1

Actualización acumulativa 12 para SQL Server 2014 SP2

Acerca de las compilaciones de SQL Server

Cada nueva compilación de SQL Server contiene todas las revisiones y correcciones de seguridad que se encontraban en la compilación anterior. Te recomendamos que instales la compilación más reciente para SQL Server:

Actualización acumulativa más reciente de SQL Server 2017

compilación más reciente para SQL Server 2016

Actualización acumulativa más reciente de SQL Server 2014

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".

Más información

Para una tabla habilitada para el seguimiento de cambios, cuando se produce una actualización en una columna no principal que se define como única, se insertan dos entradas en la tabla lateral de seguimiento de cambios: una entrada para cada una de las acciones de división, Insertar y Eliminar.

Cuando se llama a la función CAMBIARTABLE para enumerar los cambios, estas entradas se ordenan por valores de clave principal y, a continuación, las operaciones se agregan. Si la actualización inserta un valor inferior, se ejecuta primero una operación "I" en la tabla lateral, seguida de una operación "D". Esto provoca que se devuelva una operación incorrecta para esta fila. Esto se debe a que "I" seguido de "D" se agrega como "D".

Dado que solo se mantienen los valores de clave principal en las tablas laterales, no es necesario tener dos entradas independientes. Esto es así siempre y cuando no se actualice la columna de clave principal.

Este problema se ha corregido para las columnas únicas no principales. En este caso, cuando se produce la actualización, solo se inserta una fila con "U" como operación de actualización en lugar de dos entradas que tengan "D" e "I".

Referencias

Obtén información sobre la terminología que Microsoft usa para describir las actualizaciones de software.

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.