Sto eseguendo alcuni DB Admin con un database di Azure e ho bisogno di eseguire query come rimuovere tutti i vincoli nel database.SQL Rimuovi tutti i vincoli Azure Friendly
sp_MSForEachTable non è disponibile quando si lavora con i database di Azure, quindi sto lavorando su un modo diverso per farlo.
Ho trovato un frammento che cade tutte le tabelle qui: http://edspencer.me.uk/2013/02/25/drop-all-tables-in-a-sql-server-database-azure-friendly/ e ha cercato di modificarlo per rimuovere tutti i vincoli come ho bisogno di e si avvicinò con questo risultato:
while(exists(select 1 from INFORMATION_SCHEMA.TABLES where TABLE_NAME != '__MigrationHistory'))
begin
PRINT ('Disabling' + TABLE_NAME)
declare @constraintOff nvarchar(2000)
SELECT TOP 1 @constraintOff=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] ' + 'NOCHECK CONSTRAINT all')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME != '__MigrationHistory'
exec (@constraintOff)
PRINT @constraintOff
end
Si tenta ripetutamente di operare sulla prima voce nel database, che funzionerebbe bene se stavi rilasciando tutto ma ho bisogno di scorrere ogni tabella e disabilitare il suo vincolo come fa sp_MSForEachTable.
Qualche consiglio? Ho visto alcune cose qua e là che pretendono di farlo, ma di solito sono script di due o tre pagine che fanno un sacco di altre cose e mi fanno male al cervello.
UPDATE
ancora lavorando su quella query, sembra che qualcosa in tal senso potrebbe funzionare meglio, ma ancora niente da fare:
declare @constraintOff nvarchar(2000)
SELECT @constraintOff=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] ' + 'NOCHECK CONSTRAINT all')
FROM INFORMATION_SCHEMA.TABLES
exec (@constraintOff)
PRINT @constraintOff
Questo ancora funziona solo su un tavolo, ma almeno è non un ciclo infinito :)
So che questo è per Amazon RDS, ma c'è una sezione sulla disabilitazione dei vincoli: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html che potrebbe essere utile. – Nate
che era esattamente ciò che il medico ha ordinato, c'erano snippet specifici per aggiungere e rimuovere tutti i vincoli, se li metti in un post lo contrassegnerò come risposta – Eric