Déterminer si l'authentification en mode mixte est activée sans se connecter?

Réponses:

15

Une autre approche consiste à essayer de se connecter, en utilisant l'authentification SQL, avec un faux compte évidemment qui ne réussira pas. Vous pouvez ensuite utiliser le bloc-notes pour ouvrir le ERRORLOGfichier C:\Program Files\Microsoft SQL Server\$instance folder$\MSSQL\Log\et voir cette erreur ...

Erreur: 18456, gravité: 14, état: 58 .
La connexion a échoué pour l'utilisateur «polly_wants_a_cracker». Motif: une tentative de connexion à l'aide de l'authentification SQL a échoué. Le serveur est configuré pour l'authentification Windows uniquement.

Cela signifie que l' authentification en mode mixte n'est pas activée .

... ou celui-ci ...

Erreur: 18456, gravité: 14, état: 5 .
La connexion a échoué pour l'utilisateur «polly_wants_a_cracker». Motif: impossible de trouver une connexion correspondant au nom fourni.

Cela signifie que l' authentification en mode mixte est activée .

Je ne sais pas s'il y a peut-être un moyen de dire sans:

  • connexion réussie
  • avoir un accès physique à la boîte (ou au registre distant) afin de vérifier la configuration du registre (comme le décrit Julien ) ou le journal des erreurs pour l'état / message lors d'une connexion infructueuse
Aaron Bertrand
la source
18

Vous pouvez le vérifier dans le registre:

HKLM\Software\Microsoft\Microsoft SQL Server\ [instancename] \MSSqlServer

Le mode actuel est enregistré dans la LoginModeclé.

Les valeurs (DWORD) peuvent être:

  • 1 = mode d'authentification Windows
  • 2 = SQL Server et mode d'authentification Windows

Remarque:

  • 0 est équivalent à 2
  • Vous devez toujours avoir accès au Registre (et au serveur)
Julien Vavasseur
la source
2

Vous pouvez également le faire via PowerShell:

import-module sqlserver
$sqlserver = "ServerName"
$srv = Get-SqlServer -sqlserver $sqlserver
$srv.LoginMode

Cela retournera une sortie comme celle-ci:

entrez la description de l'image ici

RonDBA
la source