20.07.2014

SQL: Несколько трюков для MS SQL Server

В MS SQL Server есть недокументированная функция sp_MSforeachtable, с помощью которой можно выполнять следующие полезные трюки:

  1. Получение размера всех таблиц
    EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
    
  2. Получение количества строк во всех таблицах
    EXEC sp_MSforeachtable 'SELECT ''?'', Count(*) as NumberOfRows FROM ?'
    
  3. Перестроение всех индексов во всех таблицах
    EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"
    
  4. Отключение всех констраинтов во всех таблицах
    EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL"
    
  5. Отключение всех триггеров во всех таблицах
    EXEC sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
    
  6. Удаление данных из всех таблиц
    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
    GO
    EXEC sp_MSForEachTable '
     IF OBJECTPROPERTY(object_id(''?''), ''TableHasForeignRef'') = 1
      DELETE FROM ?
     ELSE
      TRUNCATE TABLE ?'
    GO
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
    GO

Комментариев нет:

Отправить комментарий