Database
 sql >> Datenbank >  >> RDS >> Database

Benannte Instanzen verwenden? Testen Sie Ihre DAC-Verbindung!

Als ich heute herumgespielt habe, habe ich festgestellt, dass ich über die dedizierte Administratorverbindung (auch bekannt als DAC, aber nicht dieser DAC) keine Verbindung zu meiner lokalen benannten Instanz herstellen konnte:

Es kann keine Verbindung zu ADMIN:PLASKETT\SQL2012 hergestellt werden.

Beim Herstellen einer Verbindung mit SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen werden. (Anbieter:SQL Network Interfaces, Fehler:43 – Beim Abrufen des dedizierten Administratorverbindungs-(DAC-)Ports ist ein Fehler aufgetreten. Stellen Sie sicher, dass der SQL-Browser ausgeführt wird, oder überprüfen Sie das Fehlerprotokoll auf die Portnummer) (Microsoft SQL Server, Fehler:-1)

Dies ist lokal, daher hat die folgende Einstellung auf Serverebene, um Remote-Admin-Verbindungen zuzulassen, in diesem speziellen Szenario natürlich keine Auswirkung:

EXEC sp_configure 'remote admin connections', 1;
GO
RECONFIGURE;
GO

Ich habe festgestellt, dass ich eine Verbindung herstellen konnte, wenn ich das Ablaufverfolgungsflag 7806 aktivierte, obwohl dieses Ablaufverfolgungsflag für SQL Server Express gedacht ist (wie hier dokumentiert). Aber ich wusste, dass das Problem tiefer liegen musste – Microsoft konnte diese Funktion doch nicht komplett kaputt gemacht haben, oder?

Es stellt sich heraus, dass dieses Symptom nur *benannte* Instanzen betrifft. Ich habe darüber mit Jonathan Kehayias gesprochen, der eine Standardinstanz hatte und sich gut verbinden konnte. Er konnte jedoch keine Verbindung herstellen, wenn er explizit die Portnummer angab, was dazu führte, dass er feststellte, dass TCP/IP deaktiviert war.

Obwohl dies insbesondere benannte Instanzen der Developer Edition betrifft, weil das TCP/IP-Protokoll standardmäßig deaktiviert ist, gibt es andere Szenarien, in denen Sie davon betroffen sein können, wenn Sie benannte Instanzen haben und …

  • Sie haben [versehentlich] die Developer Edition für die Produktion bereitgestellt (blöd blöd);
  • Sie haben TCP/IP auf jeder Edition deaktiviert; oder,
  • der SQL Server-Browserdienst wird nicht ausgeführt.

Um dies zu beheben, stellen Sie sicher, dass TCP/IP über den SQL Server-Konfigurations-Manager> Netzwerkprotokolle für aktiviert ist, und stellen Sie sicher, dass der SQL Server-Browserdienst ausgeführt wird. Sie müssen SQL Server neu starten.

Wenn Sie jetzt eine Verbindung über den DAC herstellen können und versuchen, eine Verbindung in Management Studio herzustellen, erhalten Sie diese Fehlermeldung:

Diese Fehlermeldung ist gutartig (und ich glaube, sie stammt von der Hintergrund-IntelliSense-Verbindung). Sie können in Ihrer Statusleiste sehen, dass Sie verbunden sind, und Sie können überprüfen, ob Ihre Verbindung die DAC-Verbindung ist, indem Sie diese Fehlermeldung schließen und eine Abfrage ausführen.

In jedem Fall ist die Bestätigung, dass Sie eine Verbindung über den DAC herstellen können, ein absolut wesentlicher Schritt in Ihrem Disaster-Recovery-Plan. Wenn Sie keine Verbindung zum DAC herstellen können, sollten Sie während Ihres nächsten Wartungsfensters (oder früher, wenn Sie sich einen Dienstneustart leisten können) eine oder beide der folgenden Maßnahmen einplanen:

  • TCP/IP aktivieren
  • Trace-Flag 7806 aktivieren

Stellen Sie in jedem Fall sicher, dass der SQL Server-Browserdienst ausgeführt wird. Stellen Sie außerdem sicher, dass die Servereinstellung zum Aktivieren von Remoteverbindungen aktiviert ist, da Sie nie wissen, wo Sie sich befinden, wenn Sie auf einen nicht reagierenden Server zugreifen müssen.

Kendra Little hat letztes Jahr einen großartigen Blogbeitrag über den DAC geschrieben. Es macht Spaß, herumzustöbern und zu sehen, was Sie mit dem DAC machen können, und es ist wirklich schön zu wissen, dass es da ist, aber es ist auch wichtig zu wissen, wie es Ihnen im Falle einer tatsächlichen Servernot möglicherweise nicht helfen kann.