Logo faq-o-matic.net
Logo faq-o-matic.net

Versionsabfrage MS SQL Server

von veröffentlicht am17. Oktober 2003, 14:47 Uhr Kurzlink http://faq-o-matic.net/?p=636 Zitatlink
Kategorie Kategorie: Scripting, SQL Server   Translate with Microsoft Translator Translate EN

Manchmal ist es erforderlich, auf möglichst einfache und schnelle Weise die Versionsnummer eines MS SQL Server herauszufinden. Nun bringt der SQL Server hierfür auch eine Funktion mit: Die Systemvariable "@@version" enthält die Information. Nachteilig dabei ist aber, dass man schon einen geeigneten Client braucht, um die Daten auch abzufragen.


Variante 1

Schneller geht es mit dem folgenden VB-Script. Es öffnet eine Verbindung zum Server, fragt die ab und gibt das Ergebnis als Meldung zurück.

Das gezeigt Script kann man z. B. auch verwenden, um die Versionsinformation in das sehr nützliche Tool "BGInfo" von Sysinternals einzubinden.

Das Skript: vbsSQLSRVversion.vbs

strSQLServer = "servername" ' hier Servernamen angeben
strConn      = "Driver={SQL Server};SERVER=" & strSQLServer

set objDB = CreateObject("ADODB.Connection")
objDB.Open(strConn)

strSQL = "select v=@@version"
set objRS = objDB.Execute(strSQL)

wscript.echo objRS.Fields("v").value

Variante 2

Als Reaktion auf den "Slammer"-Wurm Ende Januar 2003 habe ich folgende Variation des Skripts entwickelt. Es funktioniert mit SQL Server Version 7.0, 2000 und 2005. Es kann auf jedem Server bzw. Client gestartet werden, der den Windows Script Host installiert hat (ab W2000; bei NT nicht Standard).

Das Skript gibt eine Versionsinfo zu dem Server aus, dessen Namen man angibt (falls er existiert). Sollte das Skript nicht laufen, kann man direkt auf dem SQL-Server in einem CMD-Fenster folgendes Kommando eingeben:

osql -E -Q "select @@version"

Auch hier sollte eine Versionsinfo zurückkommen. Der "Slammer"-Patch ist dann vorhanden, wenn auf dem SQL-Server 2000 die Versionsnummer >= 8.00.760 ist (entspricht SP3). Auf dem SQL-Server 7.0 muss sie >= 7.00.1077 sein. Ist das nicht der Fall, dann muss gepatcht werden. Achtung: Für SQL Server 7.0 muss erst SP4, dann der Patch eingespielt werden. Die Update-Prozedur dauert ziemlich lange und erfordert mindestens einen Neustart des SQL-Dienstes, evtl. sogar des Servers.

Das Skript: vbsSQLSRVversion2.vbs

  1. strSQLServer = "." ' hier Servernamen angeben; "." ist lokal
  2. strConn      = "Driver={SQL Server};SERVER=" & strSQLServer
  3.  
  4. on error resume next
  5. set objDB = CreateObject("ADODB.Connection")
  6. objDB.Open(strConn)
  7.  
  8. if err.number <> 0 then
  9.     quitcode
  10. else
  11.     sqlvers
  12. end if
  13.  
  14. sub sqlVers()
  15.     strSQL = "select v=@@version"
  16.     set objRS = objDB.Execute(strSQL)
  17.  
  18.     if err.number <> 0 then
  19.         quitcode
  20.         exit sub
  21.     end if
  22.  
  23.     strVer = objRS.Fields("v").value
  24.  
  25.     if err.number <> 0 then
  26.         quitcode
  27.         exit sub
  28.     end if
  29.  
  30.  
  31.     if instr(strVer, "2005 - 9") > 0 then
  32.        strSQL = "SELECT v= 'SQL Server 2005 ' + cast(SERVERPROPERTY ('productlevel')" _
  33.                   & " as varchar) + ', Version ' + cast(SERVERPROPERTY('productversion')" _
  34.                   & "  as varchar) + ', ' + cast(SERVERPROPERTY ('edition') as varchar)"
  35.        set objRS = objDB.Execute(strSQL)
  36.        strVer = objRS.Fields("v").value
  37.     elseif instr(strVer, "2000 - 8") > 0 then
  38.        strSQL = "SELECT v= 'SQL Server 2000 ' + cast(SERVERPROPERTY ('productlevel')" _
  39.                   & "  as varchar) + ', Version ' + cast(SERVERPROPERTY('productversion')" _
  40.                   & "  as varchar) + ', ' + cast(SERVERPROPERTY ('edition') as varchar)"
  41.        set objRS = objDB.Execute(strSQL)
  42.        strVer = objRS.Fields("v").value
  43.     elseif instr(strVer, "7.00.1063") then strVer = "SQL Server 7.0 SP4"
  44.     elseif instr(strVer, "7.00.961") then strVer = "SQL Server 7.0 SP3"
  45.     elseif instr(strVer, "7.00.842") then strVer = "SQL Server 7.0 SP2"
  46.     elseif instr(strVer, "7.00.699") then strVer = "SQL Server 7.0 SP1"
  47.     elseif instr(strVer, "7.00.623") then strVer = "SQL Server 7.0 ohne SP"
  48.  
  49.     end if
  50.  
  51.     WScript.echo strVer
  52.  
  53. end sub
  54.  
  55. sub quitcode()
  56.     WScript.echo "(kein Wert ermittelt)"
  57. end sub

Verwandte Beiträge:

  1. BGInfo um eigene Datenfelder erweitern
    BGInfo von Sysinternals ist für viele Windows-Admins ein unverzichtbares Werkzeug. Es blendet Konfigurationsinformationen über den lokalen Rechner in das Hintergrundbild...
  2. Tipps und Tricks zum Backup eines SQL Server
    Tägliches Backup: Backup-Datei Tägliches Backup: Backup-Medium Tägliches Backup: Automatisierung Tägliches Backup Backupdatei Oft will man sämtliche Backups eines Tages übersichtlich...
  3. Tägliche SQL-Backup-Dateien
    Oft will man sämtliche Backups eines Tages übersichtlich zusammenfassen. Das ist insbesondere dann interessant, wenn man die eingebaute Backup-Funktion des...
  4. Dienst- und Task-Konten identifizieren
    Es ist keine schlechte Idee, die Kennwörter von Dienst- und Taskausführungskonten zu ändern. Vielfach sind diese nämlich mit einem, naja,...
  5. Automatische Backups für SQL Server Express
    Die Express-Edition des SQL Server 2005 erfreut sich ähnlich großer Beliebtheit wie ihre Vorgängerin MSDE. Der Grund liegt auf der...

© 2005-2012 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!