Si necesita específicamente cambiar el valor de la clave primaria a un número diferente (por ejemplo, 123 -> 1123). La propiedad de identidad bloquea el cambio de un valor PK. Establecer Identity_insert no va a funcionar. No es recomendable realizar una inserción / eliminación si tiene eliminaciones en cascada (a menos que desactive la comprobación de integridad referencial).
Este script desactivará la identidad en una PK:
***********************
sp_configure 'allow update', 1
go
reconfigure with override
go
update syscolumns set colstat = 0 --turn off bit 1 which indicates identity column
where id = object_id('table_name') and name = 'column_name'
go
exec sp_configure 'allow update', 0
go
reconfigure with override
go
***********************
A continuación, puede establecer las relaciones para que actualicen las referencias de clave externa. O bien, debe desactivar la aplicación de la relación. Este enlace SO muestra cómo:
¿Cómo se pueden deshabilitar temporalmente las restricciones de clave externa utilizando T-SQL?
Ahora puedes hacer tus actualizaciones. Escribí un script corto para escribir todo mi SQL de actualización basado en el mismo nombre de columna (en mi caso, necesitaba aumentar el CaseID en 1,000,000:
select
'update ['+c.table_name+'] SET ['+Column_Name+']=['+Column_Name+']+1000000'
from Information_Schema.Columns as c
JOIN Information_Schema.Tables as t ON t.table_Name=c.table_name and t.Table_Schema=c.table_schema and t.table_type='BASE TABLE'
where Column_Name like 'CaseID' order by Ordinal_position
Por último, vuelva a habilitar la integridad referencial y luego vuelva a habilitar la columna Identidad en la clave primaria.
Nota: veo que algunas personas en estas preguntas preguntan por qué. En mi caso, tengo que fusionar datos de una segunda instancia de producción en una base de datos maestra para poder cerrar la segunda instancia. Solo necesito todos los PK / FK de datos de operaciones para no colisionar. Los metadatos FK son idénticos.