Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как скриптом найти самые большие таблицы в БД (обязательно включая кучи) / 12 сообщений из 12, страница 1 из 1
18.05.2018, 10:32
    #39646559
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
Приветствую.

Подскажите пожалуйста, как скриптом найти самые большие таблицы в БД?

Обязательно включая кучи, т.е. где нет индекса в таблице.


Искал обычно по sysindexes, но в выборку не входят таблицы без индекса.
...
Рейтинг: 0 / 0
18.05.2018, 10:37
    #39646564
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
пкм на базе, Reports, отчет "Disk Usage By Top Tables"
...
Рейтинг: 0 / 0
18.05.2018, 10:40
    #39646565
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
...
Рейтинг: 0 / 0
18.05.2018, 10:41
    #39646568
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
Критикпкм на базе, Reports, отчет "Disk Usage By Top Tables"

репортсы не нужны.
...
Рейтинг: 0 / 0
18.05.2018, 10:44
    #39646571
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
TaPaKssms,

первый же скрипт в гугл
https://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database


Немного переделал скрипт:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    SUM(a.total_pages) DESC




Спасибо, похоже то что нужно.
...
Рейтинг: 0 / 0
18.05.2018, 10:47
    #39646572
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
ssms,

ну и
авторИскал обычно по sysindexes, но в выборку не входят таблицы без индекса.
false
...
Рейтинг: 0 / 0
18.05.2018, 11:26
    #39646591
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
TaPaKssms,

ну и
авторИскал обычно по sysindexes, но в выборку не входят таблицы без индекса.
false

reserved
dpages

Показывают разве?
...
Рейтинг: 0 / 0
18.05.2018, 11:37
    #39646601
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
ssmsTaPaKssms,

ну и
пропущено...

false

reserved
dpages

Показывают разве?

но в выборку не входят таблицы без индекса. так входят?
...
Рейтинг: 0 / 0
18.05.2018, 11:42
    #39646605
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
TaPaKssmsпропущено...


reserved
dpages

Показывают разве?

но в выборку не входят таблицы без индекса. так входят?

Как надо точно не входят.
...
Рейтинг: 0 / 0
18.05.2018, 12:02
    #39646619
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
ssms,

цикл по таблицам, sp_spaceused.
...
Рейтинг: 0 / 0
18.05.2018, 13:41
    #39646706
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
Ещё вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SELECT 
	schema_name(o.schema_id) + '.' +  o.name as [Table Name], 
	fg.name as [File Group],
	SUM (p.reserved_page_count) as [reserved_page_count],
	convert(decimal(13,2), SUM (p.reserved_page_count) * 8. / 1024 / 1024) as [reservedpages GB],
	SUM (p.used_page_count) as [used_page_count],
	convert(decimal(13,2), SUM (p.used_page_count) * 8. / 1024 / 1024) as [usedpages GB],
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
			ELSE p.lob_used_page_count + p.row_overflow_used_page_count
		END
		) as pages,
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN p.row_count
			ELSE 0
		END
		) as [rowCount]
FROM sys.dm_db_partition_stats p (nolock)
	join sys.objects as o (nolock)
		on o.object_id = p.object_id
		and o.type = 'U'
	join sys.sysindexes i (nolock)
		on i.id = o.object_id
		and i.indid in (0,1)
	join sys.filegroups fg (nolock)
		on fg.data_space_id = i.groupid
group by o.name, o.schema_id, fg.name
order by [reservedpages GB] desc

Вроде должен всё показывать...
Он ещё по файлгруппам группирует, но это можно убрать
...
Рейтинг: 0 / 0
18.05.2018, 14:45
    #39646745
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
ssmsКритикпкм на базе, Reports, отчет "Disk Usage By Top Tables"

репортсы не нужны.

Reports + Profiler
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как скриптом найти самые большие таблицы в БД (обязательно включая кучи) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]