Procedure η οποία κάνει enable και disable τα Foreign Keys σέ μια βάση.

CREATE PROC fk_disable_enable_sp @mode char(8)
AS
    BEGIN
    
      DECLARE @tblname sysname, @constraintname sysname, @execstr varchar(8000)

     DECLARE fk_cur CURSOR FOR
       SELECT '[' + table_name + ']' ,constraint_name
       FROM   information_schema.constraint_table_usage
       WHERE   lower(substring (constraint_name,1,2)) = 'fk'
  
     OPEN fk_cur
     FETCH fk_cur INTO @tblname, @constraintname
      WHILE (@@fetch_status = 0)
       BEGIN
         SET @execstr = 'alter TABLE ' + @tblname + ' ' + @mode + ' CONSTRAINT ' + @constraintname
        PRINT (@execstr)
        EXEC (@execstr)
     FETCH fk_cur INTO @tblname, @constraintname
     END
     CLOSE fk_cur
     DEALLOCATE fk_cur
end
go

----Τρόπος κλήσης της sp

---Για να κάνουμε disable τα FK
exec fk_disable_enable_sp 'nocheck'


---Για να κάνουμε enable τα FK
exec fk_disable_enable_sp 'check'

Βέβαια χρειάζεται προσοχή στην χρήση τις παραπάνω sp .Ειδικα όταν ένας administrator θέλει να την χρησιμοποιήσει δέν πρέπει να υπάρχουν ενεργοί χρήστες στην εφαρμογή που χρησιμοποιεί την βάση.

Ο λόγως δημιουργίας αυτής της sp είναι για λόγους maintanance από τον administrator .

 

Share


Έχουν δημοσιευτεί Τετάρτη, 30 Αυγούστου 2006 9:40 πμ από το μέλος imanos
Καταχώρηση στις κατηγορίες:

Σχόλια:

Χωρίς Σχόλια