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.

/* -----------------------------------------------------------------
 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

.


Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl

1 komentarz

Możliwość komentowania została wyłączona.