MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 21.11.2006, 16:42   #1
notedock
MOF User
MOF User
Standard Tabellengröße von der SQL DB ermittel

Hallo,

gibt es eine Möglichkeit die Tabellengröße der Tabellen auf dem SQL-Server zu ermitteln.

Per SQL Server Enterprise Manager kann man zwar die Tabelleninformationen wie Größe und Indexgröße manuell abrufen, jedoch ist das sehr mühsam bei über 100 verschiedenen Tabelle. Hat jemand eine Idee wie man solche Information mit VBA in Access 2000 abrufen kann. Ich möchte nur die Tabellengröße in der DB wissen damit ich rechtzeitig erkennen kann wo man Daten archivieren muss.

Danke

Gruß T.Bucher

PS: MS SQL Server 2000 und Access 2000
notedock ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.11.2006, 17:00   #2
letts
MOF Profi
MOF Profi
Standard

Hallo,

reicht Dir als Anregung ein?:
Code:

exec sp_MStablespace 'Tabellenname'

Zitat:

Rows DataSpaceUsed IndexSpaceUsed
----------- ------------- --------------
54705 15424 25920

(1 row(s) affected)

__________________

Schöne Grüsse
Christian
WinXP + Access 2002 | Win2k3 SE | MS SQL Server 2k( SP4)
Kalenderwoche: Aktuelle KW nach DIN Norm
Dumme Gedanken hat jeder, aber der Weise verschweigt sie.

Profile for temptProvidence
letts ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.11.2006, 09:26   #3
notedock
Threadstarter Threadstarter
MOF User
MOF User
Standard Tabellengröße

Hallo letts,

"sp_MStablespace" sagt mir nichts.
Bin zu selten in diesem Forum. Gibt es diese Sub oder Funktion irgendwo?

Gruß Tobias
notedock ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.11.2006, 10:02   #4
letts
MOF Profi
MOF Profi
Standard

Hallo Tobias,

dies ist eine System SP( liegt in master DB).
Das Ergebnis ist die Anzahl der Zeilen, sowie die Daten- und Indexgrösse in KB.

__________________

Schöne Grüsse
Christian
WinXP + Access 2002 | Win2k3 SE | MS SQL Server 2k( SP4)
Kalenderwoche: Aktuelle KW nach DIN Norm
Dumme Gedanken hat jeder, aber der Weise verschweigt sie.

Profile for temptProvidence
letts ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.11.2006, 11:45   #5
notedock
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo letts,

danke für die Info.
Ich habe es mittlerweile selbst gefunden und wie folgt gelöst:
Ich habe die gespeicherte Prozedure "sp_spaceused" vom Master auf die produktive Datenbank kopiert "DB_sp_spaceused" und nun kann ich mit folgendem Coding die einzelnen Tabellen in einem Listenfeld abfragen:

strSQL = "EXEC DB_sp_spaceused '" & Tabellenname & "'"
Me!Liste.RowSource = strSQL


Gruß T.Bucher
notedock ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.11.2006, 11:51   #6
letts
MOF Profi
MOF Profi
Standard

Hallo Tobias,

Vielleicht eine Alternative?!
Habe eine SP gefunden, welche Dir alle Tabellen mit den Infos der "sp_MStablespace" Prozedur liefert.
Hier die Prozedur:
Code:

CREATE PROCEDURE GetTableSpace
as
SET NOCOUNT ON
CREATE TABLE #TableSpace 
(
	Rows int, 
	DataSpaceUsed int, 
	IndexSpaceUsed int
)
DECLARE @TableSpace table
(
	TableName varchar(255),
	Rows int, 
	DataSpaceUsed int, 
	IndexSpaceUsed int
)
DECLARE @Rows int, @DataSpaceUsed int, @IndexSpaceUsed int
DECLARE @TableName varchar(255)
DECLARE Table_Cursor CURSOR FOR
SELECT	user_name(o.uid) + '.' + o.name AS table_name
FROM	dbo.sysobjects o, dbo.sysindexes i 
WHERE	OBJECTPROPERTY(o.id, N'IsTable') = 1 
	AND i.id = o.id 
	AND i.indid < 2 
	AND o.name NOT LIKE N'#%' 
	AND xtype = 'U'
ORDER BY 1
OPEN Table_Cursor
---------------------------------
--Set Data
FETCH NEXT FROM Table_Cursor INTO @TableName
INSERT INTO #TableSpace (Rows, DataSpaceUsed, IndexSpaceUsed)
EXEC sp_MStablespace @TableName
SELECT	@Rows = Rows, 
	@DataSpaceUsed = DataSpaceUsed,
	@IndexSpaceUsed = IndexSpaceUsed
FROM	#TableSpace
INSERT INTO @TableSpace (TableName, Rows, DataSpaceUsed, IndexSpaceUsed)
VALUES (@TableName, @Rows, @DataSpaceUsed, @IndexSpaceUsed)
DELETE FROM #TableSpace
--------------------------------
WHILE @@FETCH_STATUS = 0


    BEGIN
    	---------------------------------
    	--Set Data
    	FETCH NEXT FROM Table_Cursor INTO @TableName
    	
    	INSERT INTO #TableSpace (Rows, DataSpaceUsed, IndexSpaceUsed)
    	EXEC sp_MStablespace @TableName
    	
    	SELECT	@Rows = Rows, 
    		@DataSpaceUsed = DataSpaceUsed,
    		@IndexSpaceUsed = IndexSpaceUsed
    	FROM	#TableSpace
    	
    	INSERT INTO @TableSpace (TableName, Rows, DataSpaceUsed, IndexSpaceUsed)
    	VALUES (@TableName, @Rows, @DataSpaceUsed, @IndexSpaceUsed)
    	
    	DELETE FROM #TableSpace
    	--------------------------------
END

CLOSE Table_Cursor
DEALLOCATE Table_Cursor
DROP TABLE #TableSpace
SELECT * 
FROM @TableSpace
ORDER BY Rows DESC
Ergebnis wäre dann eine Auflistung nach dem Schema hier

Daten der Tabelle TabellenInfo
TableNameRowsDataSpaceUsedIndexSpaceUsed
dbo.tblAgentur6122456
dbo.tbl_Agent3906416
dbo.tblAgentstamm3663272
dbo.tblExtern21820016
dbo.Kunden16320816
dbo.dtproperties74816
dbo.tblGruppe7832
dbo.tblLaufzeit5816
dbo.tblZahlweise5816
dbo.tblAnrede5832
dbo.tblAgentur5832
dbo.tblProduktArt4816
dbo.tblProduktGrundPreis4832
dbo.tblAgenturHomepage2816
dbo.tblAgentGruppe0840
dbo.tblProzentZahlwProdAgent0832
dbo.tblStammdaten0872
Tabelleninhalte mit TabToWeb 0.74 nach HTML 4.01 transferiert.

__________________

Schöne Grüsse
Christian
WinXP + Access 2002 | Win2k3 SE | MS SQL Server 2k( SP4)
Kalenderwoche: Aktuelle KW nach DIN Norm
Dumme Gedanken hat jeder, aber der Weise verschweigt sie.

Profile for temptProvidence
letts ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.12.2006, 19:12   #7
spartakus
Top wozu kopieren

Wozu hast du die Prozedur kopiert du brauchst die gewünschte Tabelle nur vollqualifiziert angeben .. schon bekommst du die Größe der Tabelle angezeigt.
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.02.2007, 15:15   #8
giesejens
Standard dankeschön

hatte gerade überlegt, mir eine prozedur zu schreiben, die mir eine übersicht über die grossen tabellen gibt - kurzes googeln ersparte mir diese mühe.
habe nur noch die auswertung wie folgt angepasst (das tabellenvolumen war wichtig):

SELECT TOP (10) *
FROM @TableSpace
ORDER BY (IndexSpaceUsed+DataSpaceUsed) DESC

jens
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.06.2007, 20:16   #9
ballistic
Neuer Benutzer
Neuer Benutzer
Standard

Praktische Sache, diese Prozedur! Habe genau das gesucht und wurde dank Google hier fündig
Nur als Anmerkung: Oben genannte Prozedur kann man auch abkürzen, wenn man den Zeiger richtig verwendet:

Code:

CREATE PROCEDURE SP_GetTableSpace

AS

SET NOCOUNT ON

CREATE TABLE #TableSpace (
  Rows int,
  DataSpaceUsed int,
  IndexSpaceUsed int
)

DECLARE @TableSpace table (
  TableName varchar(255),
  Rows int,
  DataSpaceUsed int,
  IndexSpaceUsed int
)

DECLARE
@Rows int,
@DataSpaceUsed int,
@IndexSpaceUsed int,
@TableName varchar(255)

DECLARE Table_Cursor CURSOR FOR
SELECT user_name(o.uid) + '.' + o.name AS table_name
FROM dbo.sysobjects o, dbo.sysindexes i
WHERE OBJECTPROPERTY(o.id, N'IsTable') = 1
AND i.id = o.id
AND i.indid < 2
AND o.name NOT LIKE N'#%'
AND xtype = 'U'
ORDER BY 1

OPEN Table_Cursor

FETCH NEXT FROM Table_Cursor INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN

  INSERT INTO #TableSpace (Rows, DataSpaceUsed, IndexSpaceUsed)
  EXEC sp_MStablespace @TableName
  
  SELECT @Rows = Rows,
  @DataSpaceUsed = DataSpaceUsed,
  @IndexSpaceUsed = IndexSpaceUsed
  FROM #TableSpace
  
  INSERT INTO @TableSpace (TableName, Rows, DataSpaceUsed, IndexSpaceUsed)
  VALUES (@TableName, @Rows, @DataSpaceUsed, @IndexSpaceUsed)
  
  DELETE FROM #TableSpace

  FETCH NEXT FROM Table_Cursor INTO @TableName
END

CLOSE Table_Cursor
DEALLOCATE Table_Cursor

DROP TABLE #TableSpace

SELECT *
-- SELECT TOP 10
FROM @TableSpace
ORDER BY DataSpaceUsed+IndexSpaceUsed DESC

Geändert von ballistic (10.06.2007 um 20:19 Uhr).
ballistic ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.06.2007, 12:12   #10
strausto
MOF Guru
MOF Guru
Standard

Ich würde die SP_GetTableSpace gerne in die FAQ aufnehmen. Wäre das i.O. für jan und ballistic ?

__________________

Best regards

Torsten

Microsoft Certified Technology Specialist Microsoft® SQL Server® 2008 Business Intelligence Development and Maintenance
Microsoft Certified Technology Specialist Microsoft® SQL Server® 2008 Database Development
Member of PASS Professional Association for SQL Server http://www.sqlpass.de/
strausto ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.04.2013, 17:21   #11
ballistic
Neuer Benutzer
Neuer Benutzer
Standard

Lustig, jetzt komme ich Jahre später wieder über Google auf meinen eigenen Beitrag.

@strausto, natürlich kannst du das machen, hast du wahrscheinlich hoffentlich schon längst
ballistic ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.