Für einen Administrator und einen Entwickler ist es sinnvoll, wenn sie sich per Script Datenbankinformationen oder auch Datenbankserver-Informationen besorgen kann.
Microsoft hat zum auslesen von Datenbankinformationen und von Serverinformationen System-Views.
Datenbankserver-Informationen
Welche Version des Microsoft SQL-Servers ist denn aktuell bei Ihnen installiert?
-- Ermittlung der SQL-Server Version SELECT @@version GO
Mit diesem kleinen aber feinen CODE können Sie sich die aktuelle Version Ihres SQL-Server ausgeben lassen. Hier könnt Ihr ein Beispielergebnis der Abfrage sehen.
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright (c) Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) (Hypervisor)
Von die Edition über die Buildnummer und die Service Pack Version werden alle relevanten Daten ausgegeben.
Welche Jobs werden auf dem Server ausgeführt?
Um einen Überblick über die eingerichteten Jobs zu erhalten hat uns Microsoft sp_help_jobs in der MSDB Datenbank zur Verfügung gestellt.
--Eine Übersicht zu allen Jobs EXEC msdb.dbo.sp_help_job GO
Das Ergebnis dieser Prozedur ist recht umfangreich. Wir erhalten alle alle Jobs mit nächster Ausführungszeitpunkt, letzte Ausführung, den Besitzer, Erstellungsdatum, Änderungsdatum und noch viele mehr. Am besten einfach mal auf einem SQL-Server ausprobieren und das Ergebnis studieren. 😉
Datenbankinformationen
Welche Datenbanken sind denn auf meinem SQL-Server registriert? Dieser ein-zeiler gibt die Antwort:
-- Ermittlung aller registrierter Datenbanken EXEC sp_helpdb GO
Als Ergebnis werden folgende Spalten ausgegeben:
- Name
- db_size
- owner
- dbid
- created
- status
- compatibility_level
Wie groß sind die jeweiligen Datenbanken auf dem SQL-Server?
-- MDF und LDF getrennt aufgeführt SELECT DB_NAME(database_id) AS Datenbankname, Name AS Logical_Name, Physical_Name, (size * 8)/1024 [Größe in MB] FROM sys.master_files ORDER BY DB_NAME(database_id) -- Summe aus MDF und LDF SELECT DB_NAME(database_id) AS Datenbankname, SUM((size * 8)/1024) [Größe in MB] FROM sys.master_files GROUP BY DB_NAME(database_id) ORDER BY DB_NAME(database_id)
Wiederherstellungsmodus auslesen
Eine weitere Datenbankinformation die einfach auszulesen ist, ist der Wiederherstellungsmodus.
-- Wiederherstellungsmodus auslesen USE [<<Datenbankname>>] SELECT DATABASEPROPERTYEX('<<Datenbankname>>', 'recovery') GO
Bei dieser Abfrage müssen zwei Parameter angegeben werden.
Nämlich den Datenbankname und die Property. Diese Abfrage eignet sich gut um sie mit anderern Abfragen dynamisch mit den Parametern in einer Schleife auszuführen.
Über das gleiche Statement nur mit anderen Properties können eine Vielzahl von Datenbankinformationen ermittelt werden. Hier noch ein paar wichtige Properties:
Collation | Standard collation der Datenbank |
---|---|
Edition | Datenbankedition |
IsAutoClose | Datenbankressourcen werden nach beenden der Applikation (LOGoff letzter Benutzer) freigegeben |
IsAutoCreateStatistics | Statistiken für den Abfrageoptimierer werden erstellt |
IsAutoShrink | Datenbank wird automatisch regelmäßig verkleinert |
IsAutoUpdateStatistics | Der Abfrageoptimierer aktualisiert die Statistik nachdem sie verwendet wurde. |
IsInStandBy | Datenbank ist in Schreibschutzmodus und es können Protokolle wiederhergestellt werden. |
MaxSizeInBytes | maximale Größe der Datenbank in Bytes. |
Status | Status der Datenbank |
Updateability | Ermittelt ob die Daten der Datenbank geändert werden können. |
UserAccess | Welche Benutzer haben auf die Datenbank Zugriff. |
Version | interne Versionsnummer des SQL Server-Codes, mit dem die Datenbank erstellt wurde |
Alle Tabellen einer Datenbank
Im folgenden Beispiel kann sich z.B. ein Entwickler einen Überblick über sämtliche Tabellen einer bestimmten Datenbank machen. Als Ergebnis dieser Abfrage erhält er den Tabellennamen, die Felder der Tabelle und den Datentyp inklusive der Länge des Datentyps.
SELECT table_name=sysobjects.name, column_name=syscolumns.name, datatype=systypes.name, length=syscolumns.length FROM sysobjects JOIN syscolumns ON sysobjects.[id] = syscolumns.[id] JOIN systypes ON syscolumns.xtype=systypes.xtype WHERE -- U liefert die User-Tabellen zurück sysobjects.[xtype]='U' ORDER BY sysobjects.[name], syscolumns.colid
In der WHERE-Bedingung wird auf den Parameter xtype = U gefiltert. Das U steht in diesem Fall für User-Tabellen. Eine Erweiterung um z.B. eine bestimmte Tabelle oder ein spezielles Feld kann natürlich implementiert werden.
Wie viele Zeilen hat eine Tabelle und wie groß ist der Index?
--Auslesen der Zeilenanzahl sowie der Data-Größe und Index-Größe einer Tabelle EXEC sp_spaceused <<TABELLEN-NAME>> GO
Als Parameter wird hier der Name der gewünschten Tabelle angegeben. Als Ergebnis erhält man folgende Spalten:
- name
- rows
- reserved
- data
- index_size
- unused
Es gibt noch einige Prozeduren und Abfragen, die uns gewünschte Datenbankinformationen zur Verfügung stellen. Dieser Artikel wird nach und nach mit weitern Abfragen und Prozeduren bezüglich Server-Informationen und Datenbankinformationen erweitert.