Существует ли простой способ перечисления размера каждой таблицы в каждой базе данных на сервере MSSQL?
Я использовал запрос к sys.tables, чтобы получить результаты для одной базы данных, но у нас есть> 100 баз данных на сервер, так что способ получить те же результаты, но для всех баз данных, будет отличным.
В настоящее время мне нужно создать временный список баз данных из master.sys.databases, а затем перебрать его курсором, построить запрос и вставить результаты во временную таблицу с помощью EXEC sp_executeSQL @SQLString
.
sql-server
Цилиндрический
источник
источник
Ответы:
Если вы хотите получить это во всей вашей среде, для всех ваших баз данных ... и вы не возражаете против использования PowerShell ... Вам нужно будет запустить это с компьютера, на котором хотя бы установлена SQL Server 2008 Management Studio.
Как отмечено для
DataSpaceUsed
вывода объекта SMO в «КБ», вы можете изменить это, чтобы оно было измерением по вашему выбору, просто поместив для него сокращенную ссылку. Так что, если я хотел "МБ"$_.DataSpaceUsed/1MB
.В функции
([string[]]$server)
скобки «[]» означают, что параметр принимает массив объектов. Поэтому, если ваши серверы перечислены в файле, вы можете вызвать функцию следующим образом:Я предпочитаю использовать
Out-GridView
изначально для просмотра вывода, и он легко копирует прямо в Excel для меня. При желании вы также можете вывести это в другие поддерживаемые форматы PowerShell.Пример со скриншотом, вы также можете просто перечислить серверы:
источник
Взято из Stack-Overflow: получить размер всех таблиц в базе данных.
источник
Я использовал объединение предыдущих ответов:
источник
Однако вы можете попробовать использовать
sp_msforeachdb
пару предупреждений.Тем не менее, я использовал его успешно в течение нескольких лет.
В основном это делает курсор и замену на? с именем БД.
Вы также можете попробовать заменяющую версию Аарона Бертрана. Я сам не пробовал, но должно быть лучше.
источник
Следующее решит ваш вопрос:
источник