Connexion Administrateur Dédiée (DAC) pour SQL Server

La Connexion Administrateur Dédiée (DAC) de SQL Server est un outil crucial pour la résolution de problèmes et la maintenance d'instances SQL Server, en particulier dans des situations où les connexions standard échouent ou sont compromises. Elle est exclusivement réservée aux membres du rôle serveur fixe sysadmin.

Établir une Connexion DAC

Par défaut, la DAC n'autorise que les connexions depuis un client exécuté directement sur le serveur hébergeant l'instance SQL Server.

Avec SQL Server Management Studio (SSMS)

Pour établir une connexion DAC via SSMS, ouvrez une nouvelle fenêtre de requête en allant dans le menu "Fichier", puis "Nouveau", et sélectionnez "Requête du Moteur de Base de Données". Dans la boîte de dialogue de connexion, préfixez le nom de l'instance par ADMIN:. Par exemple, pour une instance nommée MONSERVEUR\MONINSTANCE, vous saisiriez ADMIN:MONSERVEUR\MONINSTANCE. Pour une instance par défaut, utilisez ADMIN:NOM_DE_L_HOTE.

Avec SQLCMD

L'utilitaire en ligne de commande sqlcmd prend également en charge la DAC en utilisant le commutateur -A. Voici des exemples :

  • Connexion DAC locale : sqlcmd -S ADMIN:localhost -U monutilisateur -P monmotdepasse
  • Connexion DAC distante : sqlcmd -S ADMIN:MONSERVEUR\MONINSTANCE -U monutilisateur -P monmotdepasse

Activer les Connexions DAC Distantes

Les connexions DAC distantes sont désactivées par défaut. Pour les autoriser, la configuration de l'option remote admin connections doit être modifiée.

Vérification de la Configuration Actuelle

Vous pouvez inspecter la valeur actuelle de cette option en exécutant la requête T-SQL suivante :

SELECT
    c.name AS NomOption,
    c.value AS ValeurActuelle,
    c.value_in_use AS ValeurUtilisee
FROM
    sys.configurations AS c
WHERE
    c.name = 'remote admin connections';

Ou plus simplement avec la procédure stockée sp_configure :

EXEC sp_configure 'remote admin connections';

Une valeur de 0 indique que seules les connexions locales sont autorisées. La valeur maximale est 1, n'autorisant qu'une seule connexion administrateur distante à la fois.

Procédure T-SQL pour l'Activation

Pour activer les connexions DAC distantes, exécutez les commandes T-SQL suivantes :

-- Active les connexions DAC à distance
EXEC sp_configure 'remote admin connections', 1;
GO
RECONFIGURE;
GO

Après cela, assurez-vous que le service SQL Server Browser est en cours d'exécution et que le port TCP 1434 est autorisé via le pare-feu du serveur, si ce n'est pas déjà le cas.

Visualiser les Connexions DAC Actives

Pour identifier les sessions qui utilisent la DAC, exécutez la requête ci-dessous :

SELECT
    s.session_id AS ID_Session,
    s.program_name AS ApplicationClient,
    s.host_name AS NomHoteClient,
    e.name AS NomPointTerminaison,
    e.protocol_desc AS ProtocoleUtilise
FROM
    sys.dm_exec_sessions AS s
INNER JOIN
    sys.endpoints AS e ON s.endpoint_id = e.endpoint_id
WHERE
    e.is_admin_endpoint = 1;

Spécificités et Restrictions de la DAC

La DAC est conçue pour des scénarios de diagnostic et de dépannage critiques. Pour cette raison, elle présente certaines limitations :

  • Connexion Unique : Une seule connexion DAC est autorisée par instance SQL Server à la fois. Toute tentative d'établir une seconde connexion DAC alors qu'une est déjà active sera rejetée.
  • Ressources Limitées : La DAC utilise un pool de ressources réduit pour garantir qu'elle puisse se connecter même lorsque le serveur est sous forte contrainte de ressources. Il est donc impératif de ne pas exécuter de requêtes gourmandes en ressources via la DAC, car cela pourrait entraîner des blocages sévères ou aggraver la situation du serveur.
  • Accès aux Objets Internes : L'un des avantages uniques de la DAC est son capacité à accéder à certaines tables système internes (tables de base) qui sont normalement inaccessibles ou invisibles via des connexions standard. Ces tables sont utilisées à des fins internes par le moteur de base de données et leur structure peut changer entre les versions, elles ne sont donc pas destinées à une utilisation générale.

Exemple d'Accès aux Tables Système

Considérons la table interne sys.sysrmtlgns. Avec une connexion T-SQL standard, une tentative d'accès générera une erreur :

SELECT * FROM sys.sysrmtlgns;
-- Erreur : Msg 208, Niveau 16, État 1, Ligne 1 - Nom d'objet 'sys.sysrmtlgns' non valide.

Cependant, en utilisant une connexion DAC, cette même requête s'exécutera avec succès, révélant les données internes. Voici quelques exemples de requêtes via une DAC :

SELECT net_transport, auth_scheme, client_net_address FROM sys.dm_exec_connections WHERE session_id=@@spid;
SELECT TOP 10 * FROM sys.sysrmtlgns;
SELECT TOP 10 * FROM sys.syslnklgns;

De même, des vues de catalogue comme sys.databases, bien que accessibles normalement, sont en fait construites à partir de tables de base système comme sys.sysdbreg, sys.syspalvalues et sys.syssingleobjrefs. Ces tables sous-jacentes ne sont pas directement interrogeables avec une connexion standard :

SELECT * FROM sys.sysdbreg;
SELECT * FROM sys.syspalvalues;
SELECT * FROM sys.syssingleobjrefs;
-- Erreur similaire : Msg 208, Nom d'objet 'sys.sysdbreg' non valide.

Mais elles deviennent accessibles et interrogeables via une connexion DAC, offrant une vue approfondie sur le fonctionnement interne de SQL Server.

Gestion des Erreurs Courantes

Plusieurs erreurs peuvent survenir lors de l'utilisation de la DAC, principalement dues à ses restrictions :

  1. "Impossible de se connecter car une connexion DAC est déjà active" : Cette erreur se produit lorsque vous tentez d'établir une seconde connexion DAC alors qu'une autre est déjà établie. Rappelez-vous, une seule DAC par instance.
  2. "Le nom du réseau spécifié n'est plus disponible" (Erreur 64) : Souvent, cette erreur apparaît lorsque l'on essaie de se connecter à la DAC via l'Explorateur d'Objets de SSMS. La DAC ne fonctionne qu'en ouvrant une nouvelle fenêtre de requête et en spécifiant ADMIN: dans la boîte de dialogue de connexion.

La DAC est un outil puissant pour les administrateurs système SQL Server, indispensable pour le diagnostic de problèmes critiques et pour obtenir des informations détaillées sur l'état interne d'une instance.

Étiquettes: SQLServer DAC administration T-SQL diagnostic

Publié le 4 juillet à 19h17