Datenbanken

Größe einer SQL Server Datenbank ermitteln und ausgeben

Anzeigen von Größeninformationen mittels gespeicherter Prozeduren und

In Zeiten von wachsender Interaktion zwischen Benutzer und Web-Seiten ist es wichtig, die hinter einer Site liegende Datenbank zu überwachen, sofern man dort Beitragskommentare oder ähnliches ablegt. Schnell wird der angemietete Platz auf dem Datenbank-Server zu klein und im schlimmsten Fall geht der Web-Site Funktionalität verloren, wenn kein Datensatz mehr angelegt werden kann.

Webmaster, denen ein SQL Server von Microsoft zur Verfügung steht, können hierzu auf die systemseitig implementierte Stored Procedure sp_spaceused zurückgreifen, um zu erfahren wie groß eine Tabelle oder die ganze Datenbank inzwischen ist.

Datenbankgröße

Für die Ausgabe der Informationen zur Datenbankgröße genügt im Prinzip der SQL Query Analyzer und die Verbindung zur Datenbank:

Um diese Ausgabe etwas komfortabler über die Oberfläche des Webs zur Verfügung zu stellen, braucht es neben einer kurzen Stored Procedure nur ein wenig ASP-Code:

Stored Procedure

CREATE PROCEDURE procGetDBSize
AS
   SET NOCOUNT ON
   EXEC sp_spaceused

ASP-Code

<%
 'Datenbankverbindung öffnen
 Set objConn = Server.CreateObject("ADODB.Connection")
 objConn.Open "<Verbindungzeichenfolge zum SQL-Server>"

 'Command-Objekt initialisieren
 Set objCmd = Server.CreateObject("ADODB.Command")
 objCmd.ActiveConnection = objConn
 objCmd.CommandType = adCmdStoredProc
 objCmd.CommandText = "procGetDBSize"

 'Recordset-Objekt initialisieren und öffnen
 set rs = Server.CreateObject("ADODB.Recordset")
 rs.Open objCmd,, adOpenForwardOnly, adLockReadOnly

 Set fldName = rs.Fields("database_name")
 Set fldSize = rs.Fields("database_size")
 Set fldUnalloc = rs.Fields("unallocated space")
%>

<table width="100%">
  <tr>
      <td width="200">Datenbankname:</td>
      <td><%response.write(fldName)%></td>
   </tr>
   <tr>
      <td>Aktuelle Datenbankgröße:</td>
      <td><%response.write(fldSize)%></td>
   </tr>
   <tr>
      <td>Nicht zugeordneter Speicher:</td>
      <td><%response.write(fldUnalloc)%></td>
   </tr>
...

Der aufmerksame Leser wird festgestellt haben, daß die Prozedur sp_spaceused, und somit auch unsere Prozedur, nicht nur ein, sondern zwei Resultsets zurückgibt. Um nun das zweite Resultset abzurufen, verwenden wir die Methode NextRecordset() des Recordset-Objekts.

...
<%
 Set rs = rs.NextRecordset()

 Set fldReserved = rs.Fields("reserved")
 Set fldData = rs.Fields("data")
 Set fldIndex = rs.Fields("index_size")
 Set fldUnused = rs.Fields("unused")
%>
  <tr>
     <td>Reservierter Speicher:</td>
     <td><%response.write(fldReserved)%></td>
  </tr>
  <tr>
     <td>Für Daten verwendeter Speicher:</td>
     <td><%response.write(fldData)%></td>
  </tr>
  <tr>
     <td>Für Indizes verwendeter Speicher:</td>
     <td><%response.write(fldIndex)%></td>
  </tr>
  <tr>
     <td>Nicht verwendeter Speicher:</td>
     <td><%response.write(fldUnused)%></td>
  </tr>
</table>

<%
 rs.close
 Set rs = Nothing
 Set objCmd = Nothing
%>

Tabellengrößen

Wenn man die Stored Procedure sp_spaceused mit einem Parameter bestückt, der einen gültigen Namen einer Tabelle darstellt, so erhält man die Größeninformationen über die Tabelle.

Um nun nicht die Namen der Tabellen im ASP-Code fest zu hinterlegen oder andere Konstrukte anzuwenden, um an die Informationen von allen Tabellen der Datenbank zu kommen, schreiben wir eine Stored Procedure, die alle Informationen über temporäre Tabellen zusammenträgt und uns lediglich ein Resultset mit den gewünschten Informationen zurückgibt.

CREATE PROCEDURE procGetTableSizes

AS
   SET NOCOUNT ON

   -- benötigte Variablen deklarieren
   DECLARE @sql VARCHAR(128)
   DECLARE @tname VARCHAR(128)

   -- temporäre Tabelle für Tabellennamen erzeugen...
   CREATE TABLE tmpTables(tName VARCHAR(128))

   -- ... und befüllen
   SELECT @sql = 'INSERT tmpTables '
      + 'SELECT table_name FROM INFORMATION_SCHEMA.TABLES '
      + 'WHERE table_type = ''BASE TABLE'''
   EXEC (@sql)

   -- temporäre Tabelle für Tabelleninformationen erzeugen...
   CREATE TABLE tmpSpaceUsed (
      name VARCHAR(128),
      rows VARCHAR(11),
      reserved VARCHAR(18),
      data VARCHAR(18),
      index_size VARCHAR(18),
      unused VARCHAR(18))

   SELECT @tname = ''

   -- ... über Schleife über Tabellennamen und der System-SP 'sp_spaceused' befüllen
   WHILE EXISTS (SELECT * FROM tmpTables WHERE tName > @tname)
   BEGIN
      SELECT @tname = MIN(tName) FROM tmpTables WHERE tName > @tname
      SELECT @sql = 'INSERT tmpSpaceUsed EXEC sp_spaceused ' + @tname + ''
      EXEC (@sql)
   END

   -- Informationen über Systemtabellen anfügen
   INSERT tmpSpaceUsed EXEC sp_spaceused sysobjects
   INSERT tmpSpaceUsed EXEC sp_spaceused sysindexes
   INSERT tmpSpaceUsed EXEC sp_spaceused syscolumns
   INSERT tmpSpaceUsed EXEC sp_spaceused systypes
   INSERT tmpSpaceUsed EXEC sp_spaceused syscomments
   INSERT tmpSpaceUsed EXEC sp_spaceused sysfiles1
   INSERT tmpSpaceUsed EXEC sp_spaceused syspermissions
   INSERT tmpSpaceUsed EXEC sp_spaceused sysusers
   INSERT tmpSpaceUsed EXEC sp_spaceused sysproperties
   INSERT tmpSpaceUsed EXEC sp_spaceused sysdepends
   INSERT tmpSpaceUsed EXEC sp_spaceused sysreferences
   INSERT tmpSpaceUsed EXEC sp_spaceused sysfulltextcatalogs
   INSERT tmpSpaceUsed EXEC sp_spaceused sysindexkeys
   INSERT tmpSpaceUsed EXEC sp_spaceused sysforeignkeys
   INSERT tmpSpaceUsed EXEC sp_spaceused sysmembers
   INSERT tmpSpaceUsed EXEC sp_spaceused sysprotects
   INSERT tmpSpaceUsed EXEC sp_spaceused sysfulltextnotify
   INSERT tmpSpaceUsed EXEC sp_spaceused sysfiles
   INSERT tmpSpaceUsed EXEC sp_spaceused sysfilegroups

   -- Ausgabe des Resultsets
   SELECT * FROM tmpSpaceUsed

   -- Löschen der temporären Tabellen
   DROP TABLE tmpTables
   DROP TABLE tmpSpaceUsed

Die Implementierung der Prozedur in unseren ASP-Code funktioniert exakt so wie im ersten Teil, nur daß wir hier nicht zwei Resultsets haben und durchlaufen müssen und die HTML-Tabelle etwas anders aufgebaut werden muss:

<table width="100%">
 
<tr>
   <td width="125">Name</td>
   <td align="right">Zeilen</td>
   <td align="right">Reserv. Speicher</td>
   <td align="right">Datenspeicher</td>
   <td align="right">Indexspeicher</td>
   <td align="right">Nicht verw. Speicher</td>
 </tr>

<%
 Set objCmd = Server.CreateObject("ADODB.Command")
 objCmd.ActiveConnection = objConn
 objCmd.CommandType = adCmdStoredProc
 objCmd.CommandText = "procGetTableSizes"

 set rs = Server.CreateObject("ADODB.Recordset")
 rs.Open objCmd,, adOpenForwardOnly, adLockReadOnly

 set fldName = rs.fields("name")
 set fldRows = rs.fields("rows")
 set fldReserved = rs.fields("reserved")
 set fldData = rs.fields("data")
 set fldIndex = rs.fields("index_size")
 set fldUnused = rs.fields("unused")

 do until rs.EOF

%>
  <tr>
     <td><%response.write(fldName)%></td>
     <td align="right"><%response.write(fldRows)%></td>
     <td align="right"><%response.write(fldReserved)%></td>
     <td align="right"><%response.write(fldData)%></td>
     <td align="right"><%response.write(fldIndex)%></td>
     <td align="right"><%response.write(fldUnused)%></td>
  </tr>

<%
   rs.movenext
 loop
 rs.close
 Set rs = nothing
 Set objCmd = Nothing
%>

</table>
kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

196 Kommentare bislang...

  • air max 95 nike "Hé, ne l'ont pas vu, même." Xiao Han sourit et dit, "vous savez toujours vous chez Miss the Tuen garder la ville des soldats du Diable menant à la cha?ne mondiale de l'espace humain en face sur le territoire de l'univers humain est qui?"

    "Il était un pays de l'homme a appelé le pays, dans le monde humain est un royaume du milieu, le roi appela le mois infinie, agé de 74 ans, ont deux fils, un enfant nv, et son tr?ne à son cousin , a hérité des mains d'anciens accouplement Corps d'Armée Séduction en chef de "e-mail très bien dit.

    "Vous savez aussi ǐng plus, mais maintenant le pays n'est pas infinie dans les mains sur le pays, maintenant le pays est inférieure à l'empire quatre humaine, mais peu de temps après sera le monde des humains Premier Empire, parce que quelqu'un va unifier l'humanité comme un continent tout entier, en Asie centrale, un pays immense et puissant "Xiao Han sourit et dit.

    "Il n'est pas possible, il ya trois ans, nous avons re?u les informations renvoyées par le monde humain, grande sur le pays n'a pas eu la force d'un système unifié de l'Ouest épée Kinabalu est le mont des forces de la région de l'Ouest" e-mail ne crois pas que.

    Montagne montagne Sword est l'épée en solo, cinq familles seulement quatre, et quatre fendus ouvert, pleinement intégrés dans le pays. "Xiao Han se mit à rire.

    ?Comment est-ce possible annexion de la grande sur le pays, comment sera en mesure de montagne épée" E-mail a été surpris et a dit: "le propriétaire de la montagne l'épée même mettre le diable n'est pas les joueurs faibles, si mauvais perdu un ne passent pas un petit pays, nous disons ceci sur le pays derrière les grandes forces d'intervenir? "

    "Combien de force est un seul de cette n'appartiennent pas aux peuples du monde," Xiao Han.

    "Qui?"

    Juste sous votre nez! "
    196
    air max 95 nike : Montag, 14. Mai 2012 11:44
  • mac cosmetics online
    Oakley Dispatch Sunglass
    Oakley Impatient Sunglasses
    buy mac cosmetics
    Oakley Radar Sunglasses
    Oakley Fuel Cell Sunglass
    Oakley Jupiter Sunglasses
    MAC Foundation
    Oakley Antix Sunglass
    195
    mac cosmetics online : Donnerstag, 10. Mai 2012 02:13
  • chaussures air max tn requin énorme. Ceci et plus long, Raymond a en fait augmenté de un à sept ans. La rapidité de cette mise à niveau est un peu trop malade. En particulier, il a été choqué que Raymond effectivement traversé six cette crête, vous savez, entre six et sept, il s'agit d'une fracture, très difficile à traverser. Combien de personnes au fil des ans sont pris au piège là-dedans. Conditions de culture du Ciel, cette fracture est difficile à franchir, tandis que Raymond est si facilement à cette période de temps par bonds, ce qui rend Terry est choqué. Se frotta les yeux, bien s?r qu'il n'a pas tort.

    "Haha, une percée qui est facile. Mon but, mais pour surmonter la glorieuse Seigneur Dieu. Sept seuil de la vie difficile. Comment humilier le Seigneur glorieux Dieu." Vu Terry, Raymond froid voix dit.

    "Mon gar?on, tu la mort devant les tribunaux." Terry Madden Road.

    "Boy, vous faites la cour la mort." Terry autour de deux personnages sont tout aussi furieux, chemin De toute évidence, ce n'est accomplissement de la famille forte glorieuse.

    Ils ont entendu un manque de respect Raymond vers le Seigneur Dieu de gloire, sont très en colère, glorieux Seigneur Dieu, c'est quoi? C'est leur ancêtre de la famille glorieuse. La même chose est l'objet de la gardienne de leur famille et tout le monde est respecté. Quand ils entendent les paroles de Raymond, le naturel sont très en colère, anxieux de crampes Raymond peau.

    Terry, Lander, Toscane. La chose la plus importante est maintenant à entrer Temple de pointe. Enfin, pour un, nous ne permettrons pas vos mains en mains, mais aussi dans les mains de nouveau après que le temple de pointe. "Pour voir quelques-uns Terry veulent s'impliquer, d'autres personnes ne pouvaient pas s'empêcher de parler de s'arrêter. Ils sont en attente d'entrer dans le Temple de pointe ont été en attente pour des centaines d'années, n'est pas facile à personnaliser, si Raymond kill, qui sait Shashi Hou peut bricoler? Par conséquent, quand vous voyez Terry peu veulent être sur les mains de Raymond, ils ne pouvaient s'empêcher parler de s'arrêter.

    "Eh bien, Terry, pensez-vous qu'une petit supplément j'ai peur de vous. Dites-vous les trois de vous une seule, je n'ai pas peur de vous." En regardant un peu de Terry Raymond a dit n'a pas peur. Niveau, Raymond dare et dispose de sept de Terry combats. Est maintenant sept ans, Raymond naturelle osé combattre le trois sept pinacle.
    194
    chaussures air max tn requin  : Donnerstag, 3. Mai 2012 23:14
  • tn requin pas cher Essais, mais aussi secrètement voir les lieux. En ce qui concerne secrètement voir les Who, Raymond ne savait pas. Mais le savez, cette personne doit être très, très puissant.

    En fin de compte est de savoir qui a créé le ciel le ciel à la fin quel est le secret? "Raymond ne pouvait s'empêcher de fron?a les sourcils. Il ne pouvait deviner. Raymond le sentiment que le ciel est un grand secret. Paradise créé par l'assistant, Fox, Blue Charm, la famille Tianyu sur la surface, de sorte qu'ils heureux de vivre ici, mais chaque fois que vous ouvrez le ciel des figures les plus talentueux viennent. Avez-carte. Raymond ont même un sentiment qui est le but principal du ciel ont un procès, et laissez l'assistant à la survie de ces gens sont tout simplement décoration remplit.

    Raymond dans la pensée de l'époque, l'endroit où son corps ne pouvait s'empêcher de la survenance d'un changement dans un beau palais, à la vue de Raymond. En outre, Raymond a également constaté autour de certains des ombres. Ces ombres, comme s'il attendait quelque chose.

    "Les conditions d'entrée de pointe de la maison. Avez-dix à y aller." Cette fois, l'esprit de Raymond une telle information, cette fois, il est également entendu. Pourquoi cet endroit, il y aura d'autres, ces personnes pourquoi ne pas aller à l'expédition.

    "1234 567 huit ans." Raymond regardait les ombres de ses environs, un total de huit personnes, plus il avait neuf ans, il ya encore un, Raymond, il faudra attendre.

    "Raymond, c'est vous." A cette époque, tout à coup Raymond, l'?il est aussi un changement, il a trouvé une figure familière, ce chiffre est de la famille brillante fa?on satisfaisante forte Terry, la force de Terry évidemment aussi beaucoup améliorée, sept de pointe. Sur la surface, il semble, que Raymond forte si peu.

    "Terry." Vu Terry, Raymond ne pouvait s'empêcher de sourire ce vraiment Yuanjialuzhai, ne pense pas que ici a été surpris de voir Terry.

    "Raymond ne s'attendait pas à augmenter votre force si vite si vite porté à sept la force." Yeux de Terry rempli de surprise. Ses yeux de Raymond est un choc
    193
    tn requin pas cher  : Donnerstag, 3. Mai 2012 23:12
  • We all know what arrives going to females who suit on the famed red-colored lacquered individual shoes. They are immediately filled using a wicked perception of alluring do it yourself and fall hopelessly in adore with its creator: the superb shoe custom made CHRISTIAN lOUBOUTIN SHOES.


    Where To Buy CHRISTIAN lOUBOUTIN shoes assisted accompany stilettos aback into appears within 1990s and 2000s, developing dozens of variations with heel heights of 120mm (4.72 inches) and higher.


    Christian Louboutin shoes are well-known using the red-colored sole,high quality,unique design and design as well as many female hollywood stars will choose them once they show up at some really important event and stroll within red-colored carpet.


    Christian Louboutin Balota are made in accordance with Somatology to comfortably suit everyone's feet. which means you won't be worried about suffering in the direction of beautiful.The designer's ethos can be to "make shoes which could be like jewels" and each and every special design and design demonstrates unparalleled best quality and an innate sultriness.
    192
    Where To Buy CHRISTIAN lOUBOUTIN : Sonntag, 29. April 2012 03:50

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 49

  • Datum: 15.11.2005
    Kategorie: Datenbanken
    Zugriffe: 15.010
    Kommentare: 196
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei