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

Versionsabfrage MS SQL Server

von veröffentlicht am17. Oktober 2003, 14:47 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Scripting, SQL Server   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

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

© 2005-2023 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!