Sto provando a sincronizzare gli schemi tra diversi database. Fondamentalmente, ho eseguito le attività-> Genera script con SQL Server Management Studio (2005) su entrambi i database e sto confrontando l'output con uno strumento diff.SQL Server Check/NoCheck differenza negli script generati
Per qualche ragione, uno script aggiunge il vincolo WITH CHECK e uno con nessun controllo, seguita da entrambi i vincoli di essere riattivato.
I per il primo database ottengo:
ALTER TABLE [dbo].[Profile] WITH CHECK ADD CONSTRAINT [FK_Profile_OrganizationID] FOREIGN KEY([OrganizationID])
REFERENCES [dbo].[Organization] ([OrganizationID])
GO
ALTER TABLE [dbo].[Profile] CHECK CONSTRAINT [FK_Profile_OrganizationID]
GO
La seconda banca dati genera come
ALTER TABLE [dbo].[Profile] WITH NOCHECK ADD CONSTRAINT [FK_Profile_OrganizationID] FOREIGN KEY([OrganizationID])
REFERENCES [dbo].[Organization] ([OrganizationID])
GO
ALTER TABLE [dbo].[Profile] CHECK CONSTRAINT [FK_Profile_OrganizationID]
GO
Così ho due domande:
è il risultato alla fine lo stesso ? (Edit: Sembra che un sacco di persone stanno raccogliendo solo sulla prima esposizione dei due script Sono interessato nel risultato finale della totalità di entrambi gli script..)
Se alla fine il risultato è lo stesso, perché Management Studio li genera in modo diverso per diversi database?
Tuttavia, se si guardano i due script di script, immediatamente dopo aver aggiunto il vincolo, c'è ALTER TABLE [ dbo]. [Profilo] CONTROLLA CONSTRAINT [FK_Profile_OrganizationID] GO Non controlla i vincoli in quel punto? – Nathan
Per quanto riguarda la seconda parte della risposta, si è effettivamente corretto che is_not_trusted sia impostato su uno dei database e non sull'altro. Che effetto ha questo? – Nathan
Trovato questo articolo: http://sqlblog.com/blogs/tibor_karaszi/archive/2008/01/12/non-trusted-constraints.aspx Quindi sembra che la seconda istruzione nel batch si accerti solo che il vincolo sia abilitato, in realtà non controlla i dati esistenti. Per verificare effettivamente i dati esistenti, ho bisogno di ALTER TABLE? CON CHECK CHECK CONSTRAINT all – Nathan