Determine Size of a Table in SQL Server Визначити розмір таблиці в SQL Server
Ever wonder how big a table really is in your database? Ви ніколи не замислювалися, наскільки великий таблиці справді перебуває у вашій базі даних? You know there are a million rows in the table, but how much space is that really taking? Ви знаєте, що є мільйони рядків у таблиці, але, скільки місця насправді є те, що робите?
SQL Server provides a built-in stored procedure that you can run to easily show the size of a table, including the size of the indexes… which might surprise you. SQL Server надає вбудований у збережені процедури, які можна виконати з легкістю показують розмір столу, у тому числі розмір індексів ..., які можуть вас здивувати.
Syntax: Синтаксис:
sp_spaceused 'Tablename' sp_spaceused 'ІмяТабліци'
Here's an example of it in action: Ось приклад його в дії:

Highly useful stuff. Дуже корисні речі. It's always interesting to see that the indexes are bigger than the actual data. Це завжди цікаво побачити, що індексів більше, ніж фактичні дані.

Daily Email Updates Email Щоденні оновлення
You can get our how-to articles in your inbox each day for free. Ви можете отримати наші довідкові статті у Вашу поштову скриньку щодня безкоштовно. Just enter your name and email below: Просто введіть ваші ім'я та адресу електронної пошти нижче:



While this is a useful command for determining the space allocated to a table, keep in mind that sp_spaceused references the sysindexes system table to get the space attributes and sometimes what's stored there can get be out of synch with reality. Хоча це корисна команда для визначення простору, виділеного в таблиці, майте на увазі, що посилання sp_spaceused таблиці sysindexes систему, щоб простір атрибути і іноді те, що зберігається там можна буде отримати не синхронізовані з реальністю. If you see space numbers that are seemingly out of whack (especially for the 'unused' value), run a “DBCC UPDATEUSAGE” command against the table in question before running sp_spacesued (or against the entire database if you have time and aren't worried about stepping on anyone's toes). Якщо Ви бачите простір кімнати, які, здавалося б не в порядку (особливо за "невикористаний 'значення), виконайте команду DBCC UPDATEUSAGE" проти таблицю в питанні перед запуском sp_spacesued (або проти всієї бази даних, якщо у вас є час і не турбує наступивши на пальці нікому).
This can automatically be done as an optional parameter within sp_spaceused… Це може бути автоматично зробили в якості додаткового параметра в рамках sp_spaceused ...
eg sp_spaceused 'Orders',true наприклад sp_spaceused накази ', TRUE
…or as separate commands as shown below. ... Або як окремі команди, як показано нижче.
To update usage stats for the entire current database, the syntax is: Щоб оновити статистику використання для всієї поточної бази даних, синтаксис:
DBCC UPDATEUSAGE (0) DBCC UPDATEUSAGE (0)
For a specific, named database: Для конкретного, вказаній базі даних:
DBCC UPDATEUSAGE ('InsertdDbNameHere') DBCC UPDATEUSAGE ( 'InsertdDbNameHere')
For a specific table: Для конкретної таблиці:
DBCC UPDATEUSAGE ('InsertdDbNameHere','InsertdTableNameHere') DBCC UPDATEUSAGE ( 'InsertdDbNameHere', 'InsertdTableNameHere')
You can always check BOL for all the details on DBCC UPDATEUSAGE Ви завжди можете перевірити BOL всі подробиці про DBCC UPDATEUSAGE
Thank you, using query analyer and running procedure sp_spaceused is helpful, however, what if your database has close too 100 tables. Дякуємо вам, використовуючи запит analyer і ходової sp_spaceused процедура корисна, однак, що, якщо ваша база даних має тісні занадто 100 таблиць. Anyway to return the entire database size? У будь-якому випадку, щоб повернути весь розмір бази даних?
I just found this, it returns spaceused for each table: Я просто знайшов, він повертає spaceused для кожної таблиці:
EXEC sp_MSforeachtable @command1=”EXEC sp_spaceused '?'” EXEC sp_MSforeachtable @ команда1 = "EXEC sp_spaceused '?"
Charles sp_helpdb Чарльз sp_helpdb
Rick – that is one of the most useful sql server commands of all time. Рік - це одна з найбільш корисних команд SQL сервер всіх часів. You are the greatest. Ви самий великий.
I tried to use Ricks Tipp, but having 181 Tables in the Database didnt do it much good. Я намагався використати Рікс Tipp, але, 181 таблиць у базі даних Didn't зробити багато хорошого. Also, his Mechanic with sp_spaceused treated each Table as a standalone query, wich made it impossible to use in an automated Growth-of-Database Statistic. Крім того, його механік sp_spaceused розглядати кожну таблицю як окремий запит, який зробив неможливим для використання в автоматизованих Рост-оф-базі даних статистики.
I stole/borrowed the logic of sp_spaceused and applied it to the following VIEW (wich I now add to a Statistics Table, wich can then be queried in several ways): Я вкрав / запозичили логіка sp_spaceused і застосував його для наступної точки зору (яку я зараз додати до таблиці статистики, яка потім може бути запитаний кількома способами):
SELECT SELECT
TableName, TableName,
NumRows, NumRows,
reservedpages *8192/1024 as TotalSpace, reservedpages * 8192/1024 як TotalSpace,
pages * 8192/1024 as DataSpace, сторінок * 8192/1024 як DataSpace,
(usedpages-pages)*8192/1024 as IndexSpace, (usedpages-сторінок) * 8192/1024 як IndexSpace,
(reservedpages-usedpages)*8192/1024 as UnusedSpace (reservedpages-usedpages) * 8192/1024 як UnusedSpace
FROM (SELECT FROM (SELECT
t.[name] as tablename, T. [NAME] як TableName,
avg([rows]) as NumRows, AVG ([рядок]) як NumRows,
sum(total_pages) as reservedpages, Сума (total_pages), а reservedpages,
sum(used_pages) as usedpages, Сума (used_pages), а usedpages,
sum( Сума (
CASE CASE
When it.internal_type IN (202,204) Then 0 Коли it.internal_type IN (202204) Тоді 0
When a.type 1 Then a.used_pages Коли a.type 1 Потім a.used_pages
When p.index_id Коли p.index_id
Bah, it got cut off, here is the rest: Ба, вона отримала відрізані, от все інше:
When p.index_id Коли p.index_id
When p.index_id Коли p.index_id
(smaller than sign – why doesnt it take it here?) 2 Then a.data_pages (менше, ніж знак - чому doesn't прийняти його тут?) 2 Тоді a.data_pages
Else 0 Останнє 0
END) as pages END) у вигляді сторінок
from sys.allocation_units as a Join sys.partitions as p on p.partition_id = a.container_id від sys.allocation_units як sys.partitions Увійти як на p.partition_id P = a.container_id
left join sys.internal_tables it on p.object_id = it.object_id LEFT JOIN sys.internal_tables його на p.object_id = it.object_id
JOIN sys.tables as t on p.object_id=t.object_id ПРИСОЕДИНЯЙСЯ sys.tables при Т = p.object_id на t.object_id
–WHERE t.name='mittra' -Де t.name = 'Міттра'
group by t.[name]) as subselect Група Т. [ім'я]) як підзапит