Voir le flux RSS

hmira

[Actualité] SQL Server - Connexion Administrateur Dédiée DAC

Note : 3 votes pour une moyenne de 5,00.
par , 20/07/2016 à 16h16 (1285 Affichages)
I - Préambule

Dans les situations critiques, extrêmes, lorsque, pour diverses raisons, par exemple un manque total de ressources disponibles, les connexions standards au Serveur deviennent impossibles, le DAC (Dedicated Administrator Connection) ou en français, plus clair, Connexion Administrateur Dédiée, prend toute son importance et devient un élément vital pour l’administrateur de bases de données.

Malheureusement, il n’est pas rare, que certains administrateurs, négligent l’importance du DAC, voire ignorent complètement son existence et ses fonctionnalités !

Dans les circonstances critiques, le DAC devient parfois la seule connexion permettant aux administrateurs de bases de données d'accéder à SQL Server pour exécuter des requêtes de diagnostic ainsi que d’autres requêtes de dépannage, comme mettre fin à une connexion gênante, bloquante. Dans ces circonstances critiques, le but ultime est de résoudre les problèmes et de débloquer la situation le plus rapidement possible.

Un autre point aussi important et crucial concernant le DAC, est d’autoriser les connexions à distance à utiliser la connexion administrateur dédiée (DAC). En effet, par défaut, cette connexion (DAC) n'est disponible qu'à partir d'un client sur le serveur lui-même (IP : 127.0.0.1), et comme dans les situations critiques, il y a de fortes chances qu’un accès TSE au Serveur devienne lui aussi impossible ! Il est primordial d’être prévoyant et d’anticiper les problèmes, et ce, en autorisant, bien avant, lorsque tout fonctionne normalement, les connexions à distance d’utiliser le DAC. Parce qu’en cas de problème grave, lorsque la situation devient critique, il y a de fortes chances, que vous ne puissiez plus le faire, vous seriez peut-être même dans l’impossibilité d’accéder au serveur ! C’est donc pour apporter une solution à ces situations critiques particulières que le DAC existe.

II - Autoriser les connexions à distance à utiliser la connexion administrateur dédiée (DAC)


Pour activer le DAC pour les connexions à distance, il suffit d’exécuter le bloc de code T-SQL ci-dessous :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
EXEC sp_configure 'remote admin connections', 1;
GO
RECONFIGURE
GO

Remarque
- Une fois que vous aurez exécuté la commande ci-dessus, je vous suggère de consulter le journal des erreurs de SQL Server, vous verrez des messages d’informations comme ceux indiqués dans l’exemple ci-dessous :

Nom : SQLServer_DAC_10_LogRemotePort.png
Affichages : 1401
Taille : 11,2 Ko

- Vous remarquerez que SQL Server, pour la connexion administrateur dédié (DAC), écoute désormais sur un nouveau port dédié, dans notre exemple il s’agit du port n° 61148. Ce numéro de port est attribué dynamiquement par SQL Server. À ce stade, l'écouteur DAC est donc activé, et ce, sans nécessiter un redémarrage de SQL Server.

- La connaissance de ce n° de port d’écoute des connexions DAC à distance, dans notre exemple n° 61148, n’est pas indispensable pour établir une connexion DAC. Nous verrons plus loin comment établir une connexion DAC sans préciser le numéro de port.

III - Comment utiliser la connexion administrateur dédiée (DAC)

Vous pouvez utiliser le DAC soit depuis SSMS, soit depuis l’outil en ligne de commande sqlcmd
Notez que, quel que soit le moyen que vous utiliseriez pour la connexion DAC, une et une seule connexion DAC est autorisée par instance. Donc une connexion DAC doit d’abord être terminée (disconnect) pour permettre à une autre connexion d’utiliser le DAC.

III-1 Utiliser le DAC depuis SSMS

Comme cela a été rappelé ci-dessus, une et une seule connexion peut utiliser le DAC. Évitez donc d’utiliser une connexion DAC pour l’explorateur d’objets sous SSMS. Sinon, vous ne pourrez plus ouvrir une nouvelle connexion DAC pour diagnostiquer et corriger les problèmes !

Sous SSMS procédez comme suit :

- sélectionnez le menu :
Fichier > Nouveau > Requête de moteur de base de données ;
- dans la boite de dialogue connexion, préfixez juste le nom du Serveur par : ADMIN: (le mot ADMIN suivi du signe ':' ). Les autres informations de connexion restent inchangées.

Exemple :
Nom du Serveur : ADMIN:SRV005\SQL2012
Authentification : Authentification SQL Server
Connexion : FriedrichNietzsche
Mot de passe : *******

Nom : SQLServer_DAC_20_SSMSAdminConn.png
Affichages : 1454
Taille : 24,7 Ko

Remarque : en cas d’erreur, effectuez les vérifications décrites dans le paragraphe, plus loin dans cet article,
« IV - Vérifier les autres prérequis pour le DAC »

III-2 Utiliser le DAC en ligne de commande depuis sqlcmd

Vous pouvez aussi établir une connexion DAC en utilisant l’outil sqlcmd en ligne de commande. Il suffit pour cela de spécifier le drapeau -A

Exemple :

>sqlcmd -SSRV005\SQL2012 –E –A

Nom : SQLServer_DAC_30_SqlcmdAdminConn.png
Affichages : 1357
Taille : 7,2 Ko

Vous pouvez par exemple mettre fin à une session que vous auriez identifiée comme « gênante ».

> kill 54 ;
> Go

Ci-dessous un exemple complet d’utilisation :

Code SQLCMD : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
c:\Windows\system32>sqlcmd -S SSRV005\SQL2012 -E -A
1> SELECT CASE
2>      WHEN exs.session_id= @@SPID THEN 'C''est moi-même ! '
3>      ELSE ''
4>     END + coalesce(exs.login_name,'Je ne sais qui ?') as ConnexionDAC
5> , exs.session_id
6> , exs.login_time
7> , exs.status
8> , exs.original_login_name
9> from sys.endpoints as edp with (nolock)
10> join sys.dm_exec_sessions exs with (nolock)
11> on edp.endpoint_id = exs.endpoint_id
12> where edp.name='Dedicated Admin Connection';
13> go
ConnexionDAC
                                 session_id log
in_time       status             original_login_name


--------------------------------------------------------------------------------
----------------------------------------------------------------- ---------- ---
-------------------- ------------------------------ ----------------------------
--------------------------------------------------------------------------------
--------------------
C'est moi-même ! FriedrichNietzsche
                                     51 201
6-07-20 10:08:31.003 running            FriedrichNietzsche



(1 lignes affectées)
1> kill 54;
2> go
1> exit
c:\Windows\system32>

Remarque : en cas d’erreur, effectuez les vérifications décrites dans le paragraphe, plus loin dans cet article,
« IV - Vérifier les autres prérequis pour le DAC »

IV - Vérifier les autres prérequis pour le DAC

Parmi les prérequis pour le bon fonctionnement des connexions DAC, je cite au moins quatre points importants :

1 - la connexion utilisée pour le DAC doit être membre du rôle fixe du Serveur sysadmin ;

2 - le service SQL Server Browser doit être démarré. Assurez-vous donc que le service SQL Server Browser, celui du Serveur, est en cours d’exécution, et le cas échant, s’il est arrêté, lancez-le.

Si le Service SQL Server Browser est arrêté, toute tentative de connexion administrateur dédié (DAC) est vouée à l’échec, et générera une erreur tel qu’indiqué dans la copie-écran ci-dessous :

Nom : SQLServer_DAC_40_ErrSQLBrowser.png
Affichages : 1386
Taille : 26,8 Ko

3 - vérifiez qu’il n’y a pas une autre connexion DAC en cours. En effet, comme mentionné ci-dessus, pour une instance donnée, une et une seule connexion DAC peut être établie. Si une connexion DAC est déjà établie par quelqu’un d’autre, toute tentative d’une deuxième connexion DAC est vouée à l’échec. Vous obtiendrez un message d’erreur, pas très explicite ! Comme le montre la copie-écran ci-dessous :

Nom : SQLServer_DAC_50_ErrDACAlreadyExists.png
Affichages : 1356
Taille : 23,7 Ko

Pour connaitre quelle connexion utilise actuellement le DAC, vous pouvez vous servir de la requête SQL ci-dessous. Elle permet d’afficher le numéro de session (Session_id) utilisant le DAC. Si aucune session n’utilise le DAC la requête ne retourne aucune ligne.

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
SELECT CASE 
     WHEN exs.session_id= @@SPID THEN 'C''est moi-même ! '
     ELSE '' 
	  END + coalesce(exs.login_name,'Je ne sais qui ?') as ConnexionDAC
, exs.session_id
, exs.login_time
, exs.status
, exs.original_login_name 
from sys.endpoints as edp with (nolock) 
join sys.dm_exec_sessions exs with (nolock) 
on edp.endpoint_id = exs.endpoint_id
where edp.name='Dedicated Admin Connection'

4 - il n'y a que peu de restrictions sur les instructions SQL qui peuvent être exécutées au travers une connexion DAC. Par exemple, vous ne pourrez pas exécuter des requêtes parallélisées ou certaines commandes, comme BACKUP ou RESTORE en utilisant le DAC. N’oubliez pas qu’il est par ailleurs fortement recommandé, sous une connexion DAC, de ne pas exécuter des requêtes gourmandes en ressources qui pourraient aggraver le problème qui vous a amené à utiliser le DAC. La connexion DAC doit être réservée principalement pour le dépannage et le diagnostic.

Remarque

- Notez enfin que la mise en œuvre des connexions DAC ne nécessite aucun redémarrage de l‘instance SQL Server.

- La connexion DAC n’est toutefois pas garantie à 100 % pour être toujours utilisable, mais comme le DAC utilise de la mémoire qui lui est proprement réservée, et est doté d’un planificateur (scheduler) privé et implémenté comme un nœud séparé, etc. votre connexion DAC a de très grandes chances d’aboutir alors même que les connexions standard, classiques, deviennent impossibles.

A+

Hamid MIRA

Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Viadeo Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Twitter Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Google Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Facebook Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Digg Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Delicious Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog MySpace Envoyer le billet « SQL Server - Connexion Administrateur Dédiée DAC » dans le blog Yahoo

Mis à jour 25/07/2016 à 14h39 par ClaudeLELOUP

Catégories
SQL Server

Commentaires

  1. Avatar de BLeguillou
    • |
    • permalink
    Problème à la connexion avec Admin:<Nom du serveru>
    je reçois le message d'erreur suivant:
    Les connexions administrateur dédiées ne sont pas prises en charge. (Microsoft.SqlServer.Management.SqlStudio.Explorer)
  2. Avatar de hmira
    • |
    • permalink
    Citation Envoyé par BLeguillou
    Problème à la connexion avec Admin:<Nom du serveru>
    je reçois le message d'erreur suivant:
    Les connexions administrateur dédiées ne sont pas prises en charge. (Microsoft.SqlServer.Management.SqlStudio.Explorer)
    Vous obtenez ce message d'erreur lorsque vous essayez de vous connecter directement au Serveur pour ouvrir l'explorateur d'objets.
    Il ne faut surtout pas procéder de la sorte ! Il faut suivre la procédure telle que indiquée dans le § III-1 de l’article :
    Fichier > Nouveau > Requête de moteur de base de données
    A+