Posts Tagged ‘MS SQL Server 2005’
Betrieb einer SQL Server Instanz unter Windows 7 RC / Windows Server 2008 R2 RC

Seit dem 05.05.2009 sind sowohl der RC des Vista-Nachfolgers Windows 7 als auch der Nachfolger des Windows Server 2008, Windows Server 2008 R2 als RC für die Allgemeinheit verfügbar und werden allerorten fleißig getestet. Dabei werden natürlich auch Betriebskombinationen getestet, so also auch mit dem SQL Server 2005 / 2008.

Für den Betrieb einer MS SQL Server 2005 Instanz unter Windows 7 RC / Windows Server 2008 R2 ist mindestens Service Pack 3 zu verwenden, für den Betrieb einer MS SQL Server 2008 Instanz unter Windows 7 RC / Windows Server 2008 R2 ist mindestens das Service Pack 1 zu verwenden. Anbei noch einmal die entsprechenden Downloadlinks:

Für die Installation einer SQL Server Express Edition unter Windows 7 RC verweise ich an dieser Stelle auf den SQL Server Express Weblog: Installing SQL Server Express on Windows 7 Release Candidate

Für alle die sich bisher noch nicht mit der Thematik Windows 7 / Windows Server 2008 R2 auseinandergesetzt haben hier noch die entsprechenden Produktlinks:

CU3 für SQL Server 2005 SP3 und CU13 für SQL Server 2005 SP2

In der vergangenen Nacht hat Microsoft zwei Patches für den MS SQL Server 2005 veröffentlicht. Dabei handelt es sich zum einen um das kumulative Update 3 für MS SQL Server 2005 SP3 und zum anderen um das kumulative Update 13 für MS SQL Server 2005 SP2.

Mit dem CU3 für MS SQL Server 2005 SP3 wird der Versionsstand auf 9.0.4220 gehoben. Hier der Link zum entsprechenden KB: http://support.microsoft.com/kb/967909/en-us

Mit dem CU13 für MS SQL Server 2005 SP2 wird der Versionsstand auf 9.0.3325 gehoben. Hier der Link zum entsprechenden KB: http://support.microsoft.com/kb/967908/en-us

Der reinen Vollständigkeit wegen anbei nochmal die Übersichten über alle verfügbaren CU’s für die Patchlevel ab MS SQL Server 2005 SP2 bzw. MS SQL Server 2005 SP3:
Überblick für MS SQL Server 2005 SP2
Überblick für MS SQL Server 2005 SP3

Kumulative Updates, diesmal gesammelt

Mit einem Tag Verspätung möchte ich auf die Freigabe des CU #12 (Buildnummer 9.00.3315) für SQL Server 2005 SP2 und des CU #2 (Buildnummer 9.00.4211) für SQL Server 2005 SP3 hinweisen.

Informationen zum CU #12 für SQL Server 2005 SP2 sind hier zu finden: http://support.microsoft.com/kb/962970
Informationen zum CU #2 für SQL Server 2005 SP3 sind hier zu finden: http://support.microsoft.com/kb/961930

Ein kleiner Hinweis noch in eigener Sache: Nein, ich vernachlässige diesen Blog nicht, momentan ist nur die Arbeitsauslastung recht hoch, so das zum Beispiel Teil 3 der Erhebung von statistischen Informationen noch in der Pipeline liegt. Vergessen ist er aber auf keinen Fall. Ebensowenig wie dieser Blog. Ich danke für das Verständnis.

MS SQL Server 2005 Service Pack 3 jetzt über Windows Update verfügbar

Seit dem 15.12.2008 ist es zum allgemeinen Download verfügbar, seit neuestem wird das Service Pack 3 für MS SQL Server 2005 für die Editionen Standard, Workgroup, Developer und Enterprise Edition ebenfalls per Windows Update angeboten. Es ist hier als “optional update” gekennzeichnet und wird bei benutzerspezifischen Suchen angeboten.

Für die Editionen Express Edition, Express Edition with Advanced Services und Express Toolkit wird das Service Pack vorraussichtlich in 2 Wochen als automatisches Update bereitgestellt.

Nochmal zur Erinnerung: Hier finden sich detaillierte Informationen zum Service Pack3 für MS SQL Server 2005.

Erheben von statistischen Informationen für einen SQL Server Teil 2

In Ergänzung zum Teil 1 und Nachfragen von Lesern möchte ich hier noch eine kurze Konkretisierung des Themas nachreichen: Natürlich gibt es diverse Monitoringtools, mit denen man in die Lage versetzt wird, diverse Informationen über Lastzustände oder ähnliches zu ermitteln. Mit meinen Artikel hierzu möchte ich mich allerdings auf die Möglichkeiten beschränken, welche sich mit den Bordmitteln des MS SQL Servers bieten.

In Teil 2 meines Artikels zum Erheben von statistischen Informationen für einen SQL Server möchte ich mit dem Thema der offenen Verbindungen und der angemeldeten Benutzer auseinandersetzen. Für allgemeine Informationen gibt es verschiedene Möglichkeiten, diese mittels SQL-Statements zu ermitteln.

Wie im letzten Artikel beginnen wir mit einem kurzen, einfachen Überblick über offene Verbindungen zu unserem SQL Server. Hierzu ist eine Stored Procedure vorgesehen:

sp_who

Das Resultset davon sieht in etwa so aus:

sp_whoDie hiermit erhobenen Informationen  sind allerdings noch nicht sehr vielsagend. Mehr Aussagekraft besitzt dafür die komplette Aufstellung aller Prozesse, die auf dem SQL Server gerade aktiv sind. Diese können über die Tabelle SysProcesses in der Master-Datenbank abgefragt werden.

Select * from Master..SysProcesses

Im Resultset finden wir schon detaillierter Informationen über laufende Prozesse. Allerdings haben wir hier auch alle Systemprozesse, unter anderem auch dem Vaterprozess mit der SPID 1, welcher uns im letzten Artikel schonmal untergekommen ist. Wollen wir nun nur eine Aufstellung aller Prozesse haben, welche nicht zu den reinen Systemprozessen gehören, sprich alle die, welche von Diensten oder Benutzern geöffnet wurden, können wir das Statement ein wenig modifizieren:

Select * from master..sysprocesses where IsNull(HostName, ”) <> ” and IsNull(program_name, ”) <> ” and isnull(hostprocess, ”) <> ”

Wie wir anhand dieses Statements feststellen, werden für Systemprozesse weder ein Hostname, ein Programmname noch ein entsprechender Hostprozess abgebildet, was bei Dienstprozessen oder Benutzerprozessen durchaus der Fall ist. Dies ist hier auch unser Unterscheidungskriterium. Wie wir im Resultset feststellen werden, ist es auf den ersten Blick ohne das Auswendiglernen sämtlicher Datenbank-ID’s nicht möglich zu erkennen, wer auf welcher Datenbank angemeldet ist. Dazu müssen wir das Statement noch ein wenig weiter ausbauen:

Select p.spid, p.login_time, p.last_batch, p.open_tran, p.status, p.nt_domain, p.nt_username, p.loginame,
p.hostname, p.program_name,
isnull(d.name, ‘n/a’) as DBName,
datediff(mi, p.login_time, getdate()) as ConnectionTime
from master..sysprocesses p left outer join master..sysdatabases d
on p.dbid = d.dbid
where IsNull(p.HostName, ”) <> ” and IsNull(p.program_name, ”) <> ” and isnull(p.hostprocess, ”) <> ”

Ich habe mich hier auf die meiner Meinung nach relevantesten Datenspalten beschränkt. Weitere können bei Bedarf gerne wieder hinzugefügt werden. Zusätzlich finden wir in diesem Statement noch eine Auflistung, welche Verbindung bereits wie lange in Minuten geöffnet ist. Somit ist es uns möglich, einen Überblick über angemeldete Benutzer und / oder Dienste sowie der entsprechenden Verbindungszeiten auf schnellem Wege zu liefern.

Und für alle die es noch nicht wissen: Eine geöffnete Verbindung kann man in der Rolle des sysadmin auch ohne die Mitwirkung des Anwenders manuell trennen: Hierzu wird das Kommando kill in Verbindung mit der (möglicherweise mittels eines Statements aus diesem Artikel) ermittelten SPID verwendet. Mehr dazu bei MSDN: KILL (Transact-SQL)

Erheben von statistischen Informationen für einen SQL Server Teil 1

Als Systembetreuer eines SQL Servers kann es immer wieder einmal vorkommen, das Fragen über das Nutzungsverhalten des SQL Servers gestellt werden. Mit einfachen  Bordmitteln des SQL Servers ist es durchaus möglich, einen recht umfangreichen Satz an Informationen zusammenzustellen. Das ganze werde ich die folgenden Teile splitten:

  • allgemeine Informationen
  • Überblick über offene Verbindungen und angemeldete User
  • Auswertung von DB- und Tabellengrößen

Ein erster Überblick mittels sp_monitor

Einen ersten Überblick liefert die Stored Procedure sp_monitor, welche in etwa den folgenden Output liefert:

sp_monitor_output

Was lässt sich aus diesen Informationen herauslesen?

Alle Informationen sind bezogen auf die Zeitspanne seit dem letzten Start des SQL Servers. In der Spalte last_run findet sich die Ausführungszeit des letzten Monitorings (der letzten Ausführung von sp_monitor), während in der Spalte current_run die Ausführungszeit des aktuellen Laufes enthalten ist. In der Spalte seconds ist das Zeitdelta in Sekunden zwischen den beiden letzten Ausführungen der sp_monitor abgebildet.
Als nächstes erhalten wir Informationen über die Prozessornutzung des SQL Servers. Die Werte hier sind jeweils in Sekunden abgebildet, welche der SQL Server an CPU-Zeit belegt hat. Der erste Wert ist hierbei der Absolutwert seit dem letzten Start des SQL Servers, der in Klammern eingefasste Wert bildet den jeweiligen Anteil zwischen den beiden letzten Ausführungen von sp_monitor ab. Dabei wird unterschieden in cpu_busy, io_busy und idle, wobei cpu_busy für die reine Prozessorzeit steht, welche der SQL Server benötigt hat, io_busy für die Prozessorzeit, welche für I/O-Operationen benötigt wurde und idle natürlich für den Leerlauf. Die jeweils mit Bindestrich abgegrenzten Prozentangaben sollen den jeweiligen prozentualen Anteil an den Gesamtoperationen des Servers seit dem letzten Lauf von sp_monitor darstellen, aber wie hier deutlich erkennbar in der Spalte idle scheint dies (zumindest für die idle-time) ein paar Probleme zu bereiten.
Als nächstes werden die durch den SQL Server erhaltenen empfangenen sowie gesendeten Netzwerkpakete abgebildet, ebenfalls wieder mit Total- und Differenzwert. Solange die Spalte packet_errors den Wert 0(0) anzeigt, besteht hier auch kein Grund zur Sorge. Wohlgemerkt geht es hier nur um Pakete, die direkt an die abgefragte SQL Server Instanz gesendet wurden oder von dieser gesendet wurden. Der übrige Netzwerkverkehr des basierenden Servers ist hier nicht berücksichtigt.
Zu guter Letzt  erhalten wir Informationen über die Anzahl von Lese- und Schreibzugriffen auf die Datenbank, die Anzahl der dabei aufgetretenen Fehler (ohne Unterscheidung von Lese- oder Schreibfehlern) sowie die Anzahl von hergestellten Verbindungen, wieder mit absolutem sowie differentiellem Wert.

Erhebung von Einzelwerten aus sp_monitor

Neben der Gewinnung eines Überblickes kann es auch Situationen geben, in denen nur ein bestimmter absoluter Wert der in sp_monitor abgebildeten Werte benötigt wird. Diese können über die folgenden Statements gewonnen werden:

select @@cpu_busy
select @@io_busy
select @@idle
select @@pack_recieved
select @@pack_sent
select @@packet_errors
select @@total_read
select @@total_write
select @@total_errors
select @@connections

Ermitteln der uptime einer SQL Server Instanz

Für die Erfüllung von SLA’s etc. kann es notwendig sein, die uptime einer SQL Server Instanz zu ermitteln. Diese lässt sich nur über einen kleinen Umweg herausfinden: Die Loginzeit des intialen Prozesses eines SQL Servers, welcher immer die spid (Session ID eines Prozesses) 1 besitzt. Dazu kann der folgende Code verwendet werden:

SELECT datediff(mi, login_time, getdate()) FROM master..sysprocesses WHERE spid = 1

In diesem Fall wird die uptime der SQL Server Instanz in Minuten returniert. Eine Anpassung ist je nach Anforderung umsetzbar.

Microsoft Security Advisory 961040

Wie ich bereits am 11.12.2008 berichtete, gibt es eine Sicherheitslücke in MS SQL Server 2000 und MS SQL Server 2005 in der Stored Procedure sp_replwritetovarbin durch eine fehlerhafte Parameterprüfung. Dazu hat MS am 22.12.2008 das korrespondierende Security Advisory veröffentlich, welches hier zu finden ist: Microsoft Security Advisory (961040)

Kumulatives Update #1 für MS SQL Server 2005 SP3

Auch wenn das Release bereits am 20.12.2008 war und ich zu diesem Zeitpunkt schon im Weihnachtsurlaub war, möchte ich den heutigen späten Vormittag dazu nutzen, um auf das CU1 für MS SQL Server 2005 SP3 hinzuweisen.

Aufgrund der Releasefolge der CUs für SP2 ergibt sich für das CU1 für SP3 eine Besonderheit, wer das CU einspielen sollte und wer nicht. Nach dem Featurefreeze und den beginnenden Tests für RTM des SP3 wurden die CUs 10 und 11 für SP2 entwickelt und released. Alle Fixes und Features aus diesen beiden CUs sind nicht in das SP3 eingeflossen. Wer also vor dem Update auf SP3 die CUs 10 und 11 schon eingespielt hatte, der muss das CU1 für SP3 nicht mehr einspielen. Wer nur bis CU9 gepatcht hatte, sollte das CU1 für SP3 noch nachziehen, um auf den selben Stand zu kommen.

Die Buildnummer nach dem Einspielen des CU1 für SP3 ist dann 9.00.4207

Update zum Beitrag "MS SQL Server 2005 SP3 – Ein Anschein des Release"

Wie ich grade festgestellt habe, ist das Service Pack 3 für MS SQL Server 2005 mittlerweile herunterladbar. Zu beziehen ist es hier: SQL Server 2005 SP3 – Microsoft Corporation.

Und den korrespondierenden KB findet man hier.

MS SQL Server 2005 SP3 – Ein Anschein des Release

Es scheint, als wäre das SP3 für MS SQL Server 2005 (Buildnummer 9.00.4035) erschienen. Aaron Betrand berichtete heute Nacht vom Release, aber der hinterlegte Link ist zur aktuellen Stunde tot. Das weckt Erinnerungen an das Erscheinen und Verschwinden und Wiederauftauchen des Service Pack 2 für MS SQL Server 2005.

ABER: Mit Erscheinungsdatum 15.12.2008 gibt es bei Microsoft das MS SQL Server 2005 Express Edition SP3 zu Download, mit der schon benannten Buildnummer 9.00.4035.

Ich werde euch hier weiter informieren, sobald es Neuigkeiten zum SP 3 für MS SQL Server 2005 gibt.