Otra opción es crear una nueva tabla con el clave primaria apropiada. Script de todas las relaciones además de la estructura de tabla básica en la tabla inicial. Establezca la base de datos en el modo de usuario único (para que nadie pueda cambiar los registros mientras está en proceso de transferirlos) después de asegurarse de tener una copia de seguridad actual.
Luego inserte registros de la tabla anterior en baños de, por ejemplo, 10000 a la vez. Llevará más tiempo que una inserción basada en conjunto, pero será mucho menos probable que se agote el tiempo de espera. Es posible que tenga que experimentar para encontrar el tamaño de lote óptimo. Después de que haya terminado, suelte la tabla anterior, cambie el nombre de la nueva tabla y configure cualquier relación pk/fk nuevamente. Luego salga del modo de usuario único.
Esta es una tarea que solo debe realizarse en producción durante horas no ocupadas y como una tarea de mantenimiento de la base de datos, nadie más debe tener acceso a la base de datos mientras se produce.
Nota: es posible que no tenga información exclusiva sobre la clave natural de la tabla. En este caso, podría tener un problema si está usando eso como el pk y puede necesitar mover algunos registros a una tabla de excepciones para corregirlos. Incluso si está utilizando una clave surogate como la nueva PK, le recomiendo un índice único en la clave natural de la tabla si es posible.
¿Cuál es el tipo de la columna: numérica o cadena? –
¿Está agregando una nueva columna como clave principal o está utilizando una columna existente como PK? Si está utilizando un existente, ¿cómo sabe que es único? – Maess
Supongo que está agregando algún tipo de clave de numeración automática. ¿Te importa el orden de las filas? es decir, a qué filas se le asigna qué número o ¿eso no importa? – Tony