Если базы большие, а местa на сервере мало, то приходится очищать большие таблицы (в контексте баз 1С:Предприятия это могут быть):
- Регистр сведений Версии объектов;
- Регистр сведений Адресный классификатор;
- Регистр сведений События календаря пользователя;
- Справочник Хранилище дополнительной информации;
Нижеизложенный скрипт автоматизирует этот процесс
- Определяет таблицы регистров сведений или справочников больше 2 Гб, в базах данных в имени, которых содержится %test% или %temp%.
- Очищает строки в найденных таблицах
- Переводит базы данных (в имени, которых содержится %test% или %temp%) в режим восстановления Simple.
- Сжимает базу данных.
set nocount on if exists(select name from tempdb..sysobjects where name='##tmp') drop table ##tmp create table ##tmp(Name varchar(50), reserved int) GO -- получаем большие таблицы и записываем их полные имена во временную EXEC sp_msforeachdb ' Use ?; IF DB_Name() LIKE ''%test%'' OR DB_Name() LIKE ''%_temp%'' BEGIN INSERT INTO ##tmp SELECT DB_Name()+''..''+sysobjects.Name Name, Sum(sys.dm_db_partition_stats.reserved_page_count) reserved From sysobjects Left join sys.dm_db_partition_stats ON sysobjects.id = sys.dm_db_partition_stats.object_id Where sysobjects.xtype=''U'' AND ( sysobjects.name LIKE ''_InfoReg%'' OR sysobjects.Name LIKE ''_Reference%'' ) GROUP BY sysobjects.Name HAVING Sum(sys.dm_db_partition_stats.reserved_page_count) > 200000 ORDER BY reserved DESC END' -- Очищаем строки из у больших таблиц declare @tblname varchar(50) declare tblname CURSOR for Select Name From ##tmp open tblname Fetch next from tblname into @tblname WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'TRUNCATE TABLE '+@tblname EXECUTE('TRUNCATE TABLE '+@tblname) FETCH NEXT FROM tblname INTO @tblname END CLOSE tblname deallocate tblname -- Устанавливаем режим востановления Simple и сжимаем БД EXEC sp_msforeachdb ' Use ?; IF DB_Name() LIKE ''%test%'' OR DB_Name() LIKE ''%_temp%'' BEGIN PRINT ''SHRINK DB ?'' ALTER DATABASE ? SET RECOVERY SIMPLE DBCC SHRINKDATABASE (?) END' drop table ##tmpP.S Настраиваем под свои фантазии
Комментариев нет:
Отправить комментарий