NOCHECK deaktiviert keine Fremdschlüsselreferenzen

Skript zur Tabellenerstellung:

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

Tabellenpopulationsskript

insert into name(name) values (newid())
go 100

insert into details (id,details) values(RAND()*10,newid())
Go 1000

Skript zum Abschneiden von Tabellen

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
EXEC sp_msforeachtable "truncate table ?"
EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Genommen vonWie können Fremdschlüsseleinschränkungen mit T-SQL vorübergehend deaktiviert werden?

Auch ausprobiert

alter table name nocheck constraint all
truncate table name

In beiden Fällen kann ich die Tabelle nicht abschneiden, da eine Fremdschlüsselreferenz vorhanden ist

Fehlermeldung:

Die Tabelle 'dbo.name' kann nicht abgeschnitten werden, da auf sie von einer FOREIGN KEY-Einschränkung verwiesen wird.

Gibt es eine Möglichkeit, FK-Einschränkungen zu deaktivieren, alle Daten in der Datenbank zu löschen und Identitäten neu zu initialisieren und dann FK-Einschränkungen wieder zu aktivieren?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage