Artykuły

A A A
Drukuj Ekportuj do PDF
Opublikowane: 2010.09.01 15:20 | Dariusz Brejnak

[Porada] SQL Server - Jak stworzyć listę tabel z ilościami wierszy w bazie?

tagi: SQL SQL Server
SQL Server - Jak stworzyć listę tabel z ilościami wierszy w bazie?

Przedstawiam skrypt, który umożliwia wyświtlenie listy wszystkich tabel zawartych, w wybranej bazie danych.  W stworzonej tabeli tymczasowej zawarte są następujące pola:

servername - nazwa servera z nazwą instancji,

basename - nazwa bazy danych,

name - nazwa tabeli,

rows - ilość wierszy w tabeli,

reserved - ilość zarezerwowanego miejsca w KB,

data - wielkość danych w KB,

index_size - wilekość indeksów w KB,

unused - wielkość nieużywana w KB

Informacje te uzyskuje się z procedury sp_spaceused.

 

Skrypt testowany na MS SQL Server 2000, 2008.

 

kod:

/* --------------------------------------------------------------------------------
Script     : ListTableInBase.sql
Author    : Dariusz 'DBSoft' Brejnak (c) 2010
Created   : 2010-09-01

Skrypt wyświetla listę tabel zawartych w aktualnej bazie danych.
Za pomocą procedura sp_spaceused
zwracane są informacje o liczbie wierszy, wielkości plików bazy danych
 w KB lub obiektów bazodanowych i liczbie pustych stron w
poszczególnych plikach.

wynik:
servername    basename        name          rows    reserved  data    index_size    unsed
MSSQLEXPRESS    AdventureWorks    Address          19614        4984  2224           2472       288
MSSQLEXPRESS    AdventureWorks    AddressType          6          48     8             40         0
MSSQLEXPRESS    AdventureWorks    AWBuildVersion      1          16      8              8         0
........
*/
use ala

CREATE TABLE #tmp
(
[name] varchar(50),
[rows] int,
[reserved] varchar (20),
[data] varchar (20),
[index_size]varchar(20),
[unsed] varchar(20)
)
CREATE TABLE #tmprows
(
[servername] varchar(50),
[basename] varchar(50),
[name] varchar(50),
[rows] int,
[reserved] varchar (20),
[data] varchar (20),
[index_size]varchar(20),
[unsed] varchar(20)
)

INSERT #tmp EXEC sp_MSforeachtable 'exec sp_spaceused ''?'''

INSERT #tmprows SELECT @@SERVERNAME,
DB_NAME(),
[name],
[rows],
replace(reserved,'KB',''),
replace(data,'KB',''),
replace(index_size,'KB',''),
replace(unsed,'KB','')
FROM #tmp

SELECT [servername],
[basename],
[name],
[rows],
[reserved],
[data],
[index_size],
[unsed]
FROM #tmprows
ORDER BY [name]

DROP TABLE #tmp
DROP TABLE #tmprows

--


Komentarze 0 Masz uwagi do tej strony? Napisz

Dodaj komentarz

avatar

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Autor Dariusz Brejnak
avatar Ekspert WSS
 

Załóż konto
WSS to serwis, który łączy dziesiątki tysięcy specjalistów IT w Polsce, zajmujących się szeroko pojętymi technologiami Microsoft. Portal działa od 2003 roku, i oprócz setek publikacji technicznych, rozwijającego się forum - portal to ludzie, którzy go tworzą. To właśnie z myślą o nich warto codziennie nas odwiedzać.

Dowiedz się więcej o WSS