Размеры таблиц SQL

Публикация № 1060195

Администрирование - Статистика базы данных

Отчет Размер БД MS SQL sqlcmd

18
Сколько места занимает справочник? Почему такая большая база? Отчет покажет!

Иногда хочется понять, какие таблицы занимают больше всего места? Может быть что-то можно удалить? Формируем структуру хранения, смотрим отчет в SQL по размеру таблиц. Сопоставляем по именам. Отчет делает именно это. Но написан на СКД. А значит можно рисовать графики, группировки и т.п.

Отчет показывает размер таблиц, количество записей, используемое и неиспользуемое место. Соответственно, вы можете сориентироваться сколько места вам сможет выиграть shrink. А может быть и обнаружите, что кучу места у вас съедает неиспользуемая таблица.

Особенности работы

Подготавливается два набора данных: 

1. ПолучитьСтруктуруХраненияБазыДанных();

2. Запрос через SQLCMD с выводом результата во временный файл и парсингом этого файла.

Имя сервера SQL  и Имя базы SQL - обязательные параметры. Имя пользователя SQL и Пароль пользователя SQL нужно указывать, если по каким-либо причинам нужно выполнить запрос размеров таблиц под другим пользователем.

При компоновке результата формируется CMD-файл, который выполняет команду sqlcmd и формирует файл-результат. По умолчанию, в каталог временных файлов на сервере. Но можно поменять серверный путь в параметре Путь к временным файлам. 

Поскольку формируется и запускается cmd-файл, возможно сообщение системы безопасности. 

Протестировано на версии платформы 1С 8.3.12.1714, MS SQL Server 14, Microsoft (R) SQL Server Command Line Tool Version 12.0.2000.8 NT. Сервер 1С и Сервер SQL на одной машине.

P.S. Возможно, есть и другие варианты решения задачи)

18

Скачать файлы

Наименование Файл Версия Размер
Отчет Размеры таблиц SQL:
.erf 9,81Kb
15.05.19
30
.erf 9,81Kb 30 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. user-z99999 18 15.05.19 16:33 Сейчас в теме
Поскольку формируется и запускается cmd-файл, возможно сообщение системы безопасности.
P.S. Возможно, есть и другие варианты решения задачи)

Взаимодействие 1С с ADODB
2. SlavaKron 15.05.19 16:40 Сейчас в теме
Все такого рода обработки делают почти одно и то же.
	Соединение = Новый COMОбъект("ADODB.Connection");
	СтрокаПодключения = "Provider=SQLOLEDB;Server=" + СерверSQL + ";DataBase=" + БазаSQL + ";User ID=" + ПользовательSQL + ";Password=" + Пароль + ";";
	Попытка
		Соединение.Open(СтрокаПодключения);
	Исключение
		Соединение = Неопределено;
		Возврат
	КонецПопытки;
	Соединение.CommandTimeout = 0;	
	ТекстЗапроса =
	"CREATE TABLE #temp (
	|	table_name nvarchar(128),
	|	row_count INT,
	|	reserved_size varchar(18),
	|	data_size varchar(18),
	|	index_size varchar(18),
	|	unused_size varchar(18))
	|SET NOCOUNT ON
	|INSERT #temp
	|EXEC sp_msforeachtable 'sp_spaceused ''?'''
	|
	|SELECT
	|	*
	|FROM #temp
	|
	|DROP TABLE #temp";	
	
	Выборка = Соединение.Execute(ТекстЗапроса);
	Данные = Выборка.GetRows().Выгрузить();
Показать
Alias; user811769; user612295_death4321; +3 Ответить
3. Painted 27 21.05.19 15:26 Сейчас в теме
(2) Я бы в начале запроса тоже "DROP TABLE #temp" поставил. Перед "CREATE TABLE #temp"
4. Stanley211 05.06.19 16:41 Сейчас в теме
Сервер 1С и SQL на разных машинах. При запуске в толстом клиенте с машины, с сервером 1С с выдается сообщение "Не найдено поле замены"ИмяТаблицыХранения"".
5. Stanley211 07.06.19 14:54 Сейчас в теме
(4)Да на тестовой машине та же ошибка, сервер 1С и SQL на одном ПК, платформа 8.3.12.1714, MS SQL Server 16...
6. SnubbyAston 17 10.06.19 18:00 Сейчас в теме
(4)
При запуске в толстом клиенте с машины, с сервером 1С с выдается сообщение "Не найдено поле замены"ИмяТаблицыХранения"".



А можно уточнить, какие настройки СКД используются? Стандартные? Имя пользователя и пароль указываете?
7. Stanley211 13.06.19 11:50 Сейчас в теме
Если подскажите, где можно посмотреть настройки СКД, то сообщу конечно. Наш 1С программист в отпуске до июля... Проверил ещё на втором тестовом сервере, в копии базы, там Ваша обработка корректно отработала. График вышел и таблица с размерами также.
8. SnubbyAston 17 13.06.19 16:15 Сейчас в теме
(7)
Если подскажите, где можно посмотреть настройки СКД, то сообщу конечно.

Если конфигурация типовая попробуйте выбрать пункт меню Еще -> Стандартные настройки,
Или Еще -> Прочее -> Стандартные настройки

Если самописная, то возможно где то в меню Еще возможно есть пункт "Установить стандартные настройки".

А на двух серверах ваших, на которых НЕ работает обработка, сообщение об ошибке одинаковое? "Не найдено поле замены"ИмяТаблицыХранения""?
9. Salexey 15.07.19 20:23 Сейчас в теме
здесь удобнее таблицы группируются по объектам https://infostart.ru/public/1093355/
Оставьте свое сообщение