В MS SQL Server есть недокументированная функция sp_MSforeachtable, с помощью которой можно выполнять следующие полезные трюки:
- Получение размера всех таблиц
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
- Получение количества строк во всех таблицах
EXEC sp_MSforeachtable 'SELECT ''?'', Count(*) as NumberOfRows FROM ?'
- Перестроение всех индексов во всех таблицах
EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"
- Отключение всех констраинтов во всех таблицах
EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL"
- Отключение всех триггеров во всех таблицах
EXEC sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
- Удаление данных из всех таблиц
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
Комментариев нет:
Отправить комментарий