NOCHECK no deshabilita las referencias de clave externa
Script de creación de tablas:
CREATE TABLE [dbo].[details](
[id] [int] NULL,
[details] [varchar](max) NULL
)
CREATE TABLE [dbo].[name](
[id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[name] [varchar](max) NULL,
CONSTRAINT [PK__name__3213E83F0D384EE4] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
ALTER TABLE [dbo].[details] WITH NOCHECK ADD CONSTRAINT [id] FOREIGN KEY([id])
REFERENCES [dbo].[name] ([id])
GO
ALTER TABLE [dbo].[details] NOCHECK CONSTRAINT [id]
GO
Cuadro de comandos de población
insert into name(name) values (newid())
go 100
insert into details (id,details) values(RAND()*10,newid())
Go 1000
Script de truncamiento de tablas
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
EXEC sp_msforeachtable "truncate table ?"
EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Tomado de¿Cómo se pueden deshabilitar temporalmente las restricciones de clave externa utilizando T-SQL?
Tambien intentado
alter table name nocheck constraint all
truncate table name
Ambos casos no me permiten truncar la tabla ya que hay una referencia de clave externa allí
Mensaje de error:
No se puede truncar la tabla 'dbo.name' porque una restricción FOREIGN KEY hace referencia a ella.
¿Hay alguna forma de deshabilitar las restricciones FK, eliminar todos los datos en la base de datos y reinicializar las identidades, y luego volver a habilitar las restricciones FK?