Дано: База 1С SQL, надо разобраться, отчего она растет, как на дрожжах.
Поскольку это 1С - имеются сотни таблиц, перебирать которые вручную никакого желания нет.
Решение 1.
http://blog.imageofyou.ru/2011/11/09/all-tables-size/
Понадобилось мне тут давеча оценить размер таблиц в базе данных
одного из наших клиентов. Еще со времен SQL Server 2000 я знаю про
процедуру
sp_spaceused, но она хороша только для
случая, когда нужен размер лишь одного объекта – конкретной таблицы или
же всей БД целиком. А для того, чтобы посмотреть размер каждого объекта
(например, для того, чтобы найти аномально большие таблицы) приходилось
извращаться с курсором и сохранением результата выполнения процедуры во
временной таблице. Не самый изящный способ.
С появлением в SQL Server 2005
data management views эту задачу стало возможно решить с помощью всего одного запроса (без курсоров, временных таблиц и прочей “экзотики”).
select t.name as TableName, Min(t.create_date) as CreateDate, ds.name as FileGroupName, SUM(u.total_pages) * 8 / 1024 as SizeMB
from sys.tables as t
inner join sys.partitions as p on t.object_id = p.object_id
inner join sys.allocation_units as u on p.partition_id = u.container_id
inner join sys.data_spaces as ds on u.data_space_id = ds.data_space_id
group by t.name, ds.name
order by SizeMB desc
Решение 2
http://mainview.ru/raznoe/sql-mysql/kak-najti-samye-bolshie-tablicy-v-baze-dannyx-ms-sql
USE [DatabaseName]
GO
CREATE TABLE #temp (
table_name sysname ,
row_count INT,
reserved_size VARCHAR(50),
data_size VARCHAR(50),
index_size VARCHAR(50),
unused_size VARCHAR(50))
SET NOCOUNT ON
INSERT #temp
EXEC sp_msforeachtable 'sp_spaceused ''?'''
SELECT a.table_name,
a.row_count,
COUNT(*) AS col_count,
a.data_size
FROM #temp a
INNER JOIN information_schema.columns b
ON a.table_name collate database_default
= b.table_name collate database_default
GROUP BY a.table_name, a.row_count, a.data_size
ORDER BY CAST(REPLACE(a.data_size, ' KB', '') AS integer) DESC
DROP TABLE #temp
Альтернативные варианты: искать обработки с инфостарта, писать самому, получить демонстрационный доступ на сервисе
gilev.ru