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.
Pour utiliser l'authentification Windows, il faut que l'une des deux choses suivantes soit vérifiée:
Si aucune de celles-ci n'est vraie, vous devez faire l'une des deux choses suivantes:
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.
Se débarrasser de Integrated Security=true
a fonctionné pour moi.
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.
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.
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.
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.
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:
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.
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
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=***" />