web-dev-qa-db-fra.com

Problème de connexion au serveur SQL La connexion a échoué. "La connexion provient d'un domaine non approuvé et ne peut pas être utilisée avec l'authentification Windows"

J'essaie d'héberger une base de données de serveur SQL, mais chaque fois que j'essaie de me connecter, le message d'erreur suivant s'affiche:

La connexion provient d'un domaine non approuvé et ne peut pas être utilisée avec Windows authentification

Je me connecte via Matlab à l'aide de la commande suivante:

conn = database('Clinical_Data','DoyleLab07\Acc','','com.Microsoft.sqlserver.jdbc.SQLServerDriver','jdbc:sqlserver://DOYLELAB07\SQLEXPRESS:54287;database=Clinical_Data;integratedSecurity=true;').

La connexion à la base de données à l'aide de matlab a bien fonctionné tant que j'utilisais matlab sur l'ordinateur utilisé pour héberger le serveur. Cependant, lorsque j'utilise un autre ordinateur et la même commande Matlab, l'erreur ci-dessus est affichée. 

Quand je regarde sous le panneau de configuration\système. Je remarque qu'aucun domaine n'est répertorié sur mon PC hôte ou sur le PC que j'utilise pour me connecter à l'hôte, mais les deux ordinateurs font partie du même groupe de travail. Pourrais-je résoudre mon problème en créant un domaine et en ajoutant le PC étranger et l'hôte à ce domaine? Si oui, comment cela peut-il être accompli?

Toutes les suggestions seront très appréciées. Merci d'avoir lu mon post. 

29
Gaven

Pour utiliser l'authentification Windows, il faut que l'une des deux choses suivantes soit vérifiée: 

  1. Vous exécutez à partir du même ordinateur que le serveur de base de données. 
  2. Vous avez un environnement Active Directory et l'utilisateur sous lequel l'application est exécutée (généralement l'utilisateur connecté) a le droit de se connecter à cette base de données.

Si aucune de celles-ci n'est vraie, vous devez faire l'une des deux choses suivantes: 

  1. Établissez un contrôleur de domaine Windows, connectez toutes les machines pertinentes à ce contrôleur, puis réparez le serveur SQL pour qu'il utilise des comptes de domaine. OU, 
  2. Modifier le serveur SQL pour utiliser les comptes Windows et SQL Server. 

Pour FAR, le moyen le plus simple est de changer SQL Server pour utiliser les comptes Windows et SQL Server. Ensuite, il vous suffit de créer un utilisateur de serveur SQL sur le serveur de base de données et de modifier votre chaîne de connexion pour le faire.

La meilleure option 1 nécessitera une journée complète d’installation et de configuration. L'option 2 devrait prendre environ 5 minutes. 

21
NotMe

Se débarrasser de Integrated Security=true a fonctionné pour moi.

20
Shahid Miah

Si votre serveur SQL se trouve sur un contrôleur de domaine et que vous essayez de vous y connecter à partir d'un autre contrôleur de domaine, vous obtiendrez cette erreur lorsque 

IntegratedSecurity = true;

Cela se produira même si vous incluez un nom d'utilisateur et un mot de passe SQL Server valides dans votre chaîne de connexion, car ils seront automatiquement écrasés avec votre identifiant et votre mot de passe Windows. La sécurité intégrée signifie simplement - utilisez vos informations d'identification Windows pour la vérification de la connexion à SQL Server. Donc, si vous êtes connecté à un autre contrôleur de domaine, cela échouera. Dans le cas où vous êtes sur deux contrôleurs de domaine différents, vous n'avez pas d'autre choix que d'utiliser

IntegratedSecurity = false;

Désormais, lorsque la sécurité intégrée est définie sur false, SQL Server utilisera le nom d'utilisateur et le mot de passe SQL Server fournis dans votre chaîne de connexion. Pour que cela fonctionne, le mode d'authentification de l'instance SQL Server doit être configuré en mode mixte, à savoir le mode d'authentification SQL Server et Windows. 

Pour vérifier ou modifier ce paramètre dans SQL Server, vous pouvez ouvrir SQL Server Management Studio, cliquer avec le bouton droit de la souris sur le nom de votre serveur, puis sélectionner Propriétés. Dans la fenêtre contextuelle qui apparaît, sélectionnez Sécurité et vous verrez où modifier ce paramètre si nécessaire. 

7
Jay

J'ai eu le même problème lorsque j'utilisais des alias DNS et des fichiers hôtes pour se connecter à une machine utilisant un nom de domaine différent.

Supposons que vous avez un serveur SQL appelé sql1 sur mydomain.com - qui est un domaine Active Directory - et que vous avez également une zone DNS pour mydomain.net et que, par souci de cohérence, vous configurez un enregistrement d'alias DNS (CNAME) pour database.mydomain.net --> sql1.mydomain.com

Vous pourrez vous connecter à sql1.mydomain.com à l'aide de la sécurité intégrée de Windows, mais ne pourrez pas vous connecter à database.mydomain.net même s'il s'agit du même serveur car le nom de domaine ne correspond pas à votre domaine AD.

5
Dylan Beattie

Pourquoi ne pas utiliser un compte SQL Server et transmettre le nom d'utilisateur et le mot de passe?

Voici la raison pour laquelle.

En bref, il semble que vous ayez un problème d’authentification.

Le problème avec les groupes de travail est qu’il n’existe pas de liste de contrôle d’accès commune comme Active Directory (AD). Si vous utilisez ODBC ou JDBC, les informations d'identification incorrectes sont transmises.

Même si vous créez un compte Windows local (LWA) sur l'ordinateur (SE) sur lequel SQL Express est installé (SE\LWA), les informations d'identification qui seront transmises à partir de votre ordinateur client (CM) seront CM\LWA.

3
CRAFTY DBA

Ce message d'erreur peut également se produire si le compte que vous utilisez pour accéder au serveur SQL est verrouillé par le domaine.

2
GWLlosa

Comme mentionné ici , vous devrez peut-être désactiver le bouclage

La vérification en boucle peut être supprimée en ajoutant une entrée de registre comme suit:

  • Editez le registre en utilisant regedit. (Démarrer -> Exécuter> Regedit) 
  • Accédez à: HKLM\System\CurrentControlSet\Control\LSA 
  • Ajoutez une valeur DWORD appelée «DisableLoopbackCheck». Définissez cette valeur sur 1
0
Miguel Febres

La suite a fonctionné pour moi pour obtenir l'accès à SQL Server d'une autre machine en utilisant l'authentification Windows. Cette approche peut être utile uniquement dans un environnement de développement/test. Par exemple. vous devez mettre à jour le mot de passe manuellement une fois que vous l'avez changé sur votre ordinateur de travail.

Sur la machine avec SQL Server, accédez au Panneau de configuration et ajoutez un nouvel utilisateur Windows avec le même nom d'utilisateur et le même mot de passe que sur votre ordinateur de travail. Ensuite, créez une connexion SQL Server pour cet utilisateur:

CREATE LOGIN [SQLSERVERHOST\myuser] FROM WINDOWS;

Vous pouvez maintenant utiliser cet identifiant pour l'authentification Windows.

Si vous recevez l'erreur «Le nom de connexion provient d'un domaine non approuvé», cela signifie peut-être que vous avez modifié le mot de passe sur votre ordinateur en fonctionnement et que vous devez maintenant le mettre à jour sur un ordinateur SQL Server.

0
user5888551

Dans mon cas, les alias de la configuration de SQL Native Client 11.0 pointaient vers un serveur/IP non valide. Une fois mis à jour, cela fonctionnait correctement.

Pour vérifier: 1. Démarrez "Gestionnaire de configuration SQL Server" 2. Naviguez vers «Configuration de SQL Native Client 11.0», puis «Alias» 3. Assurez-vous que "nom d'alias" et "serveur" correspondent correctement pour TCP/IP

0
user4109297

Suivre travaillait pour moi. espérons que cela vous aide

<add name="getconn" connectionString="Data Source=servername;Initial Catalog=DBName;Persist Security Info=True;User ID=sa;Password=***" />
0
Hiren Patel