1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| DECLARE @SQL NVARCHAR(MAX);
SET @SQL = N'';
BEGIN TRANSACTION;
BEGIN TRY
-- désactivation des contraintes d'intégrité référentielles pour les clefs étrangères
SELECT @SQL = @SQL + N'ALTER TABLE [' + TABLE_SCHEMA + N'].[' + TABLE_NAME + N'] '
+ N' NOCHECK CONSTRAINT [' + CONSTRAINT_NAME + N'];'
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = N'FOREIGN KEY';
EXEC (@SQL);
SET @SQL = N'';
-- vidage des tables
SELECT @SQL = @SQL + 'DELETE FROM [' + TABLE_SCHEMA + N'].[' + TABLE_NAME + N'];'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
EXEC (@SQL);
-- réactivation des contraintes d'intégrité référentielles pour les clefs étrangères
SELECT @SQL = @SQL + N'ALTER TABLE [' + TABLE_SCHEMA + N'].[' + TABLE_NAME + N'] WITH CHECK'
+ N' CHECK CONSTRAINT [' + CONSTRAINT_NAME + N'];'
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = N'FOREIGN KEY';
EXEC (@SQL);
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK;
DECLARE @MSG NVARCHAR(1200);
RAISERROR ('Transaction annulée suite à erreur dans le script : ', 16, 1, @MSG)
END CATCH; |
Partager