Если базы большие, а мест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 ##tmp
P.S Настраиваем под свои фантазии

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