Änderungen

Wechseln zu: Navigation, Suche

MS-SQL T-SQL extract space used by all tables

1.688 Byte hinzugefügt, 07:05, 4. Jul. 2015
Die Seite wurde neu angelegt: „= Extraction des benutzten Platzes aller Tabellen in allen Datenbanken = Mit diesem Skript kann ich eine Übersicht des Platzverbrauches aller Tabellen in all…“
= Extraction des benutzten Platzes aller Tabellen in allen Datenbanken =

Mit diesem Skript kann ich eine Übersicht des Platzverbrauches aller Tabellen in allen Datenbanken bekommen. Um die Daten für die einzelnen Tabellen zu bekommen wird die Funktion "sp_spaceused" benutzt. Mittels sp_msforeachtable und einem cursor über master..sysdatabases wird über alle Tabellen der [[SQL Server]] Instanz iteriert.

Das Skript selber habe ich in einem Beitrag des Forums [http://www.sqlservercentral.com/Forums/Topic476475-8-1.aspx www.sqlservercentral.com] gefunden.

== Anlegen des Ziels in Form einer Tabelle ==
<source lang="tsql">
CREATE TABLE tblTableData
(vchdatabasename varchar(256) NULL,
vchTableName VARCHAR(100) NOT NULL,
intRows INT NOT NULL,
vchReservedSpace VARCHAR(100) NOT NULL,
vchData VARCHAR(100) NOT NULL,
vchIndexSize VARCHAR(100) NOT NULL,
vchUnusedSpace VARCHAR(100) NOT NULL)
</source>

== Das Skript ==

In dem Skript wird die Tabelle vor jedem neuen Durchlauf gelöscht!

<source lang="tsql">
declare csr_db cursor for
select [name] from master..sysdatabases
where [dbid] >4

declare @cmd varchar(max)
declare @dbs varchar(256)

delete from [master].[dbo].[tblTableData]

open csr_db
fetch next from csr_db into @dbs

while @@fetch_status = 0
BEGIN

set @cmd = @dbs + '..sp_msforeachtable '' insert into master.dbo.tblTableData(vchtablename,introws,vchreservedspace,vchData,vchIndexSize,vchUnusedSpace) exec sp_spaceused ''''?'''' '''
exec(@cmd)

set @cmd = 'update master.dbo.tblTableData set vchdatabasename = ''' + @dbs + ''' where vchdatabasename is null'
exec(@cmd)

fetch next from csr_db into @dbs
END

close csr_db
deallocate csr_db

</source>
175
Bearbeitungen