KB0024: Fehler bei Netzwerkzugriff auf die Microsoft SQL Server Datenbank

FEHLERMELDUNG

Beim Zugriff auf die Microsoft SQL Server Datenbank, erscheint eine Meldung in der Form «Kann nicht auf SERVERNAME\INSTANZNAME verbinden», «Server existiert nicht» oder «Zugriff verweigert».

URSACHE

Die Instanz der TimeSafe Datenbank im Microsoft SQL Server lässt keine Remoteverbindungen zu oder es sind keine Netzwerkprotokolle aktiviert. Aus diesen Grund kann nur lokal auf die Datenbank zugegriffen werden. Das Problem tritt auch dann auf, wenn die Windows-Firewall (oder eine andere Soft-Firewall) aktiviert ist und diese Zugriffe auf den Port 1433 blockiert.

LÖSUNG

Führen Sie die nachfolgenden, für Ihr System relevanten Schritte durch:

Dienste starten

  1. Starten Sie den SQL Server Configuration Manager
  2. Wählen Sie auf der linken Seite den Eintrag SQL Server Netzwerkkonfiguration
  3. Wählen Sie auf der linken Seite den Eintrag SQL Server XXXX-Dienste. XXXX bezieht sich dabei auf die Version des SQL Servers.
  4. Prüfen Sie auf der rechten Seite ob die Dienste SQL Server und SQL Server-Browser gestartet sind und starten Sie die Dienste andernfalls.
  5. Schliessen Sie das Fenster

Remote Verbindungen zulassen

  1. Starten Sie das SQL Server Management Studio (Tool von Microsoft zum Verwalten von SQL Server Datenbanken. Die Express Version kann kostenlos bei Microsoft heruntergeladen werden.)
  2. Selektieren Sie im Objekt Explorer die TimeSafe Datenbank Instanz (z.B. SERVERNAME\TIMESAFE) mit der rechten Maustaste
  3. Wählen Sie den Kontextmenueintrag Eigenschaften
  4. Wählen Sie auf der linken Seite den Eintrag Verbindungen
  5. Aktivieren Sie auf der rechten Seite die Eigenschaft Remoteverbindungen mit diesem Server zulassen
  6. Das Fenster mit OK schliessen
  7. Den SQL-Dienst neustarten

Protokolle aktivieren

  1. Starten Sie den SQL Server Configuration Manager
  2. Wählen Sie auf der linken Seite den Eintrag SQL Server Netzwerkkonfiguration
  3. Wählen Sie auf der linken Seite den Eintrag Protokolle für „INSTANZ“. Instanz ist der Instanzname der TimeSafe Datenbank
  4. Aktivieren Sie die beiden Protokolle TCP/IP und Named Pipes
  5. Schliessen Sie das Fenster
  6. Starten Sie den SQL Server Dienst neu

Erstellen einer Ausnahme für die Windows-Firewall

  1. Windows-Firewall-Einstellungen in der Systemsteuerung öffnen
  2. Neue eingehende Regel erstellen: Regeltyp „Programm“
    Programmpfad des Dienstes „SQL Server Browser“ (Datei: sqlbrowser.exe)
    Sicherstellen, dass unter „Erweitert“ die Regel für alle Profile gilt!
  3. Neue eingehende Regel erstellen: Regeltyp „Programm“
    Programmpfad des Dienstes „SQL Server“ (Datei: sqlservr.exe) Datei. Richtige Instanz verwenden!
    Sicherstellen, dass unter „Erweitert“ die Regel für alle Profile gilt!
  4. Beide Dienste neu starten.

Client-Protokolle aktivieren

Möglicherweise müssen auch auf dem Client die SQL-Verbindungsprotokolle aktiviert werden

  1. Starten Sie auif dem Client das Programm „cliconfg“ mittels Start-Ausführen.
  2. Aktivieren Sie die Protokolle „TCP/IP Sockets“ und „Named Pipes“.

Mehrere SQL-Server Instanzen

Bei der Verwendung von mehreren SQL-Server Instanzen, kann es vorkommen, dass eine Meldung in der Form „Der SQL-Server ist nicht erreichbar.. prüfen Sie bitte die Einstellungen der Windows-Firewall…“ erhalten.

In diesem Fall sollten sämtliche SQL-Server Dienste neu gestartet werden. Danach muss zwingend auch der SQL-Server Browser Dienst neu gestartet werden.

.NET-Framework aktualisieren

Falls die Verbindung vom Client-Computer aus dem Datenverbindungs-Dialog der TimeSafe Leistungserfassung oder aus einem udl-File möglich ist, aber beim Starten der TimeSafe Leistungserfassung ein Fehler auftritt, kann es sein, dass das .NET-Framework auf dem entsprechenden Client aktualisiert werden muss. Laden Sie dazu das aktuellste für das Betriebssystem des Clients verfügbare .NET-Framework von Microsoft herunter und installieren Sie es.

Die angezeigte Fehlermeldung kann z.B. wie folgt lauten:

Die zuletzt verwendete Datenbank 'TimeSafeLeistungserfassung' auf SQL-Server 'DBSERVER\INSTANZ' konnte nicht erreicht werden.
Der SQL-Server meldet folgenden Fehler:
Fehlernummer -2: Verbindungstimeout abgelaufen. Das Timeout ist aufgetreten, während die Bestätigung des Handshakes vor der Anmeldung aufgetreten, oder der Server hat nicht rechtzeitig geantwortet. Folgende Verbindungszeiten wurden bei dem Versuch benötigt, eine Verbindung mit diesem Server herzustellen: [Vor Anmeldung] Initialisierung=21038; Handshake=5;

Es ist auch gut möglich, dass der Zugriff von einzelnen Clients funktioniert, von anderen aber nicht.