Database
 sql >> Base de données >  >> RDS >> Database

Utiliser des instances nommées ? Testez votre connexion DAC !

En jouant aujourd'hui, j'ai découvert que je ne pouvais pas me connecter à mon instance nommée locale en utilisant la connexion administrateur dédiée (autrement connue sous le nom de DAC, mais pas ce DAC) :

Impossible de se connecter à ADMIN :PLASKETT\SQL2012.

Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur :interfaces réseau SQL, erreur :43 – Une erreur s'est produite lors de l'obtention du port de connexion administrateur dédié (DAC). Assurez-vous que le navigateur SQL est en cours d'exécution ou consultez le journal des erreurs pour le numéro de port) (Microsoft SQL Server, erreur :-1)

Ceci est local, donc bien sûr le paramètre suivant au niveau du serveur pour autoriser les connexions d'administration à distance n'a aucun effet dans ce scénario spécifique :

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

J'ai trouvé que je pouvais me connecter si j'activais l'indicateur de trace 7806, même si cet indicateur de trace est destiné à SQL Server Express (comme documenté ici). Mais je savais que le problème devait être plus profond que cela :Microsoft n'aurait pas pu totalement casser cette fonctionnalité, n'est-ce pas ?

Il s'avère que ce symptôme n'affecte que les instances *nommées*. J'en parlais avec Jonathan Kehayias, qui avait une instance par défaut et pouvait se connecter correctement. Cependant, il ne pouvait pas se connecter s'il spécifiait explicitement le numéro de port, ce qui l'a amené à découvrir que TCP/IP était désactivé.

Bien que cela affecte les instances nommées de Developer Edition spécifiquement parce que le protocole TCP/IP est désactivé par défaut, il existe d'autres scénarios où cela peut vous blesser si vous avez des instances nommées et…

  • vous avez [accidentellement] déployé Developer Edition en production (méchant méchant) ;
  • vous avez désactivé TCP/IP sur n'importe quelle édition ; ou alors,
  • le service SQL Server Browser n'est pas en cours d'exécution.

Pour résoudre ce problème, assurez-vous que TCP/IP est activé via le Gestionnaire de configuration SQL Server> Protocoles réseau pour et assurez-vous que le service SQL Server Browser est en cours d'exécution. Vous devrez redémarrer SQL Server.

Désormais, lorsque vous pourrez vous connecter via le DAC, si vous essayez de vous connecter dans Management Studio, vous obtiendrez ce message d'erreur :

Ce message d'erreur est bénin (et je pense qu'il vient de la connexion IntelliSense en arrière-plan). Vous pouvez voir dans votre barre d'état que vous êtes connecté et vous pouvez vérifier que votre connexion est la connexion DAC en ignorant ce message d'erreur et en exécutant une requête.

Dans tous les cas, confirmer que vous êtes en mesure de vous connecter via le DAC est une étape absolument essentielle dans votre plan de reprise après sinistre. Si vous ne parvenez pas à vous connecter au DAC, vous devez planifier l'une des actions suivantes ou les deux lors de votre prochaine fenêtre de maintenance (ou plus tôt, si vous pouvez vous permettre un redémarrage du service) :

  • activer TCP/IP
  • activer l'indicateur de trace 7806

Dans les deux cas, assurez-vous que le service SQL Server Browser est en cours d'exécution. Assurez-vous également que le paramètre du serveur pour activer les connexions à distance est activé, car vous ne savez jamais où vous pourriez être lorsque vous devez accéder à un serveur qui ne répond pas.

Kendra Little a écrit un excellent article de blog sur le CAD l'année dernière. C'est amusant de fouiller et de voir ce que vous pouvez faire avec le DAC, et c'est vraiment agréable de savoir qu'il est là, mais il est également important de savoir comment il pourrait ne pas être en mesure de vous aider en cas de difficultés réelles du serveur.