Αρκετές φορές έχει χρειαστεί να αδειάσω όλους τους πίνακες μίας βάσης δεδομένων. Όσοι έχετε βρεθεί στην ίδια θέση τότε σίγουρα θα έχετε αντιμετωπίσει το πρόβλημα του ότι πρέπει πρώτα να διαγραφούν τα στοιχεία στους Child πίνακες και μετά στους Parent γιατί αλλιώς τα Relationships δεν θα σας αφήσουν. Η πιο εύκολη λύση είναι να κάνετε Disable όλα τα Constraints και τους Triggers, να κάνετε τις διαγραφές και στη συνέχεια να τα ενεργοποιήσετε ξανά. Όμως αν η βάση έχει καμιά κατοσταριά πίνακες τότε η διαδικασία αυτή είναι επίπονη.
Η λύση τελικά για αυτό υπάρχει ήδη και είναι πολύ εύκολη και γρήγορη. Υπάρχει η Stored Procedure sp_MSforeachtable που αναλαμβάνει να τη διαδικασία του Loop. Για περισσότερες οδηγίες δείτε στα Books online.
Με έξι μόλις γραμμές μπορεί κάποιος να μηδενίσει τη βάση του.
[code:tsql]
--Απενεργοποίηση των Constraints & Triggers
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
--Διαγραφή όλων των δεδομένων απο όλους τους πίνακες
exec sp_MSforeachtable 'DELETE ?'
--Ενεργοποίηση των Constraints & Triggers again
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
--Κάνουμε Reset όλα τα Identity fields
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 begin DBCC CHECKIDENT (''?'',RESEED,0) END'
[/code]