Pourquoi est-ce que j'obtiens «Impossible de se connecter au serveur - une erreur liée au réseau ou spécifique à l'instance»?

379

J'obtiens l'erreur suivante lorsque j'essaie de me connecter à SQL Server:

Impossible de se connecter à 108.163.224.173.

Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server.

Le serveur est introuvable ou inaccessible. Vérifiez que le nom d'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance.

(fournisseur: fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server) (Microsoft SQL Server, erreur: 1326)

Cette erreur est levée lorsque j'essaie de configurer ma base de données sur gridview dans Visual Studio 2010. Je ne sais pas comment déboguer cette erreur.

Comment voulez-vous déboguer cette erreur? Quelles mesures dois-je prendre pour déterminer ce qui se passe réellement ici, en plus de celui mentionné dans le message d'erreur?

Sasa Shree
la source
11
Un ping n'est pas fiable pour tester la connectivité SQL Server, la demande d'écho ICMP est désactivée par défaut dans Windows Server. Un nom d'utilisateur ou un mot de passe invalide n'est pas du tout ce que l'erreur vous dit, c'est une erreur complètement différente.
Sean Airey
1
Essayez cet article, il passe à peu près toutes les étapes dont vous aurez besoin pour résoudre vos problèmes de connectivité: social.technet.microsoft.com/wiki/contents/articles/…
Sean Airey
3
Consultez ma réponse ici avec ma capture d'écran si vous avez reçu cette erreur avec SQL Server {version} Express, lors de sa première configuration. Je suis revenu à StackOverflow et j'ai utilisé ma réponse à nouveau car c'était la seule qui fonctionnait. stackoverflow.com/questions/1391503/…
MacGyver
J'ai eu ce problème sur mon serveur virtuel lorsque je voulais me connecter à l'hôte local. Il est apparu qu'il y avait une sorte d'erreur lors du lancement du système d'exploitation - dans mon cas, tout a été résolu heureusement avec un redémarrage propre.
Qohelet
Aujourd'hui, j'ai passé beaucoup de temps là-dessus, enfin ce qui a fonctionné pour moi est le suivant: Ouvrez Sql Server Configuration Manager -> Protocoles pour <INSTANCE> -> TCP / IP -> Adresses IP (onglet) . Allez à la dernière entrée IP All et mentionnez TCP Port 1433 . Redémarrez maintenant SQL Server (INSTANCE) à l' aide de services.msc . Après cela, le problème a été résolu.
ani627

Réponses:

301

J'ai trouvé les techniques suivantes utiles:

  1. Assurez-vous que votre moteur de base de données est configuré pour accepter les connexions à distance :

    • Démarrer> Tous les programmes> SQL Server 2005> Outils de configuration> Configuration de la surface d'exposition SQL Server
    • Cliquez sur Configuration de la surface d'exposition pour les services et les connexions
    • Sélectionnez l'instance qui rencontre un problème> Moteur de base de données> Connexions à distance
    • Activer les connexions locales et distantes
    • Redémarrez l'instance
  2. Vous devrez peut-être créer une exception sur le pare-feu pour l'instance SQL Server et le port que vous utilisez:

    • Démarrer> Exécuter> Firewall.cpl
    • Cliquez sur l'onglet exceptions
    • Ajouter sqlservr.exe (généralement situé dans C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin, vérifiez vos installations pour le chemin du dossier réel) et le port (par défaut est 1433)
    • Vérifiez également votre chaîne de connexion
  3. Vérifiez si vos services SQL Server fonctionnent correctement:

    • Accédez à Tous les programmes> Microsoft SQL Server 2008> Outils de configuration> Gestionnaire de configuration SQL Server> Services SQL Server
    • Vérifiez que l'état du service SQL Server est en cours d'exécution.

    De plus, assurez-vous que votre serveur distant se trouve sur le même réseau . Exécutez sqlcmd -Lpour vérifier si votre serveur est inclus dans votre liste de réseaux.

  4. Activer TCP / IP dans la configuration de SQL Server

    Lorsque deux serveurs SQL Server ou plus sont connectés sur le réseau, ils effectuent toutes les communications à l'aide de TCP / IP. Le port par défaut de l'installation de SQL Server est 1433. Ce port peut être modifié via SQL Server Configuration Manager. TCP / IP doit être activé pour que SQL Server soit connecté.

    • Accédez à Tous les programmes >> Microsoft SQL Server 2008 >> Outils de configuration >> Gestionnaire de configuration SQL Server >> Sélectionnez TCP / IP
    • Clic droit sur TCP / IP >> Cliquez sur Activer

    Vous devez redémarrer les services SQL Server pour que toutes les modifications prennent effet. Cliquez avec le bouton droit et accédez aux propriétés du menu pour sélectionner l'emplacement où le port par défaut de SQL Server peut être modifié.

Teo Chuen Wei Bryan
la source
10
Activer TCP / IP dans la configuration SQL Server était la solution pour moi lors de l'utilisation de SQL Server 2014 Express.
Mike Richards
73
Aujourd'hui, j'ai passé beaucoup de temps là-dessus, enfin ce qui a fonctionné pour moi est le suivant: Ouvrez Sql Server Configuration Manager -> Protocoles pour <INSTANCE> -> TCP / IP -> Adresses IP (onglet) . Accédez à la dernière entrée IP All et mentionnez TCP Port 1433 . Redémarrez maintenant SQL Server (<INSTANCE>) à l' aide de services.msc . Après cela, le problème a été résolu!
ani627
1
J'étais également confronté au problème particulier sur mon serveur Sql local et résolu en vérifiant les services locaux du système d'exploitation et en recherchant les services Sql spécifiques et en les démarrant un par un. Cela a fonctionné parfaitement.
Faisal Naseer
4
Moi aussi, j'ai eu le même problème, connecté au serveur SQL, j'ai trouvé que le service mssqlserer était arrêté, je l'ai démarré. A pu se connecter à l'instance maintenant
Rak
15
Aussi RAPPELEZ - VOUS au ENABLE SQL Server Browserservice. J'ai configuré un certain nombre de serveurs SQL à mon époque ... Pourtant, cette étape semble toujours impliquer différents scénarios :)
mschr
125

J'ai une solution pour moi:

Ouvrez "SQL Server Configuration Manager"

Maintenant, cliquez sur "Configuration du réseau SQL Server" et cliquez sur "Protocoles pour le nom "

Clic droit sur "TCP / IP" (assurez-vous qu'il est activé) Cliquez sur Propriétés

Sélectionnez maintenant l'onglet "Adresses IP" -et- Allez à la dernière entrée "IP All"

Entrez "TCP Port" 1433.

Redémarrez maintenant "SQL Server .Name". en utilisant "services.msc" (winKey + r)

Ça va marcher...

Irshad Khan
la source
En essayant cela, mais pour une raison quelconque, lorsque je clique avec le bouton droit de la souris et choisis "Propriétés" sur "TCP / IP" dans windows10, cela ne fait pas apparaître la fenêtre de dialogue pour cela. Les autres nœuds en général dans l'arborescence font apparaître des boîtes de dialogue très bien. Quelqu'un a ce problème et des idées pour le résoudre?
Ryan Betker - healthNCode
3
Dans SQL Server 2014, utilisez (localdb) \ mssqllocaldb au lieu de (localdb) \ v11.0
Shalva Avanashvili
67
Copiez collé mon commentaire (qui a été posté le 24 février 2015 - 7 mois avant votre message) comme réponse sans me donner de crédits! : P
ani627
2
Cela a fonctionné. Je n'ai pas pu me connecter à SQL Server 2016. Apporté ces modifications et cela a fonctionné! Merci.
Ankur
1
ça marche pour moi. juste dû démarrer les services dans "service.msc" après avoir activé TCP / IP et les canaux nommés dans le gestionnaire de configuration.
Alif Noushad
100

Ajout de mon commentaire fortement voté comme réponse avec des captures d'écran.

J'ai passé beaucoup de temps là-dessus, enfin ce qui a fonctionné pour moi est:

1) Ouvrez Sql Server Configuration Manager -> Configuration du réseau SQL Server -> Protocoles pour <(INSTANCE)> -> TCP / IP (double-cliquez dessus).

entrez la description de l'image ici

2) Sélectionnez -> Adresses IP (onglet) .

3) Accédez à la dernière entrée IP All et mentionnez TCP Port 1433 .

entrez la description de l'image ici

4) Appuyez sur Win+Ret entrez services.msc .

5) Redémarrez maintenant SQL Server <(INSTANCE)> .

entrez la description de l'image ici

Après cela, le problème a été résolu!

ani627
la source
A travaillé pour moi, SQL Express 2012
lost_in_magento
A travaillé pour moi dans le serveur SQL 2012 après avoir activé TCP, ajouté le numéro de port 1433 à TCP ALL et redémarrer le service!
Chirag Khatsuriya
Pour moi, je devais également autoriser TCP 1433 et UDP 1434 dans le pare
MarkusEgle
83

Je résous ce problème en ouvrant les services, puis en exécutant le service Sql Server (Sqlexpress) .

image de service

Anik Saha
la source
3
J'ai vu où le service Windows SQL Server a été défini sur Type de démarrage manuel, il n'a donc pas redémarré lors d'un redémarrage. Il doit être défini sur Automatique.
robertburke
2
C'est exactement ce que j'ai fait, Mon état était en cours d'exécution et StartupType était automatique, mais j'ai toujours rencontré le problème, j'ai donc utilisé les services du type de fenêtre Exécuter, services.mscpuis j'ai cliqué avec le bouton droit sur SQL Server (SQL EXPRESS) pour le menu contextuel et juste arrêter et démarrer le service à nouveau et fonctionne bien pour moi, l'espoir aide.
shaijut
22

Cette erreur est principalement survenue lorsque le service SQL est arrêté.Vous devez redémarrer le service.Pour accéder à cette fenêtre, vous devez rechercher les services comme celui-ci- entrez la description de l'image ici

Recherchez ensuite SQLSERVER (MSSQLSERVER) et redémarrez le service.

entrez la description de l'image ici

J'espère que cela fonctionnera.

Debendra Dash
la source
18

Appuyez sur window + R (Run window Open)et dans le type de fenêtre d'exécution "services.msc"et ouvrez de nouveaux services, recherchez SQL SERVER avec le nom d'instance dans mon cas, SQL SERVER(SQLEXPRESS)puis démarrez ce service et réessayez, cela fonctionne pour moi. Hope Its Works for You également.entrez la description de l'image ici

Hafiz Asad
la source
La réponse a été fournie précédemment. Ne recevez aucune raison de le poster à nouveau
Anik Saha
8
mon ami est confronté au même problème mais je ne sais pas la fenêtre des services ouverts à chaud alors j'ai trouvé un moyen et j'ai pensé partager avec les gens
Hafiz Asad
Merci, @HafizAsad. Votre réponse fonctionne pour moi.
Adnan Ahmad
@AdnanAhmad vous êtes les bienvenus. Merci pour votre appréciation.
Hafiz Asad
16

Dans le cas où vous pourriez utiliser l'édition Express :

Ajouter "\SQLEXPRESS" après le nom de votre serveur

par exemple "MY-SERVER\SQLEXPRESS"

entrez la description de l'image ici

Abdulrahman Bres
la source
13

J'ai eu la même erreur lorsque j'ai voulu exécuter mon projet WinForms (qui inclut le travail avec une base de données SQL Server et qui fonctionnait parfaitement sur mon PC) sur un autre PC. Le problème était dans le pare-feu Windows sur mon PC. J'ai résolu cela en ajoutant deux règles. Voici toute la procédure pour autoriser SQL Server via le pare-feu Windows:

  1. Ouvrez "Exécuter" et entrez services.msc
  2. Recherchez le service pour SQL Server (nom d'instance) et le navigateur SQL Server. Un à la fois, faites un clic droit, sélectionnez "Propriétés", copiez le chemin d'accès au fichier exe
  3. Ensuite, ouvrez firewall.cpl, cliquez sur autoriser une application ou ajoutez une règle, ajoutez le chemin précédemment copié (il y a une procédure que vous devez suivre), cochez Domaine et Privé, décochez Public.

Voici le lien YouTube où vous pouvez voir cette procédure: Autoriser SQL Server via le pare-feu Windows

Casse Noisette
la source
Fonctionne parfaitement pour moi. Important: Ajoutez un navigateur et un serveur dans le pare-feu! +1
BendEg
J'avais du mal à localiser le fichier sqlservr.exe, cela a fait l'affaire en le localisant.
Stan
11

Si aucune des solutions ci-dessus ne fonctionne (rien n'a fonctionné pour moi), redémarrez simplement votre ordinateur et vous pourrez vous connecter à votre serveur SQL (localhost).

Eugen Sunic
la source
La raison pour laquelle cela fonctionnera, c'est parce que vous venez d'installer Sql Server et que vous n'avez pas redémarré l'ordinateur comme vous l'a demandé l'installation. Alors, faites-le et les services seront créés et toute la configuration nécessaire qui manquera.
Sterling Diaz
10

Après avoir fait tout ce qui est mentionné ici:
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a- connection-to-sql-server-microsoft-sql-server-error / ne fonctionnait toujours pas pour moi.

Les étapes ont fonctionné pour moi:

Start > Run > cmd > sqlcmd -L

Il vous demandera le nom du serveur. Assurez-vous que ce nom de serveur est le même que celui auquel vous essayez de vous connecter dans la zone CONNECT TO SERVER de SQL Management Studio.

J'ai fait cette erreur stupide que je continue d'utiliser MSSQLSERVERplutôt en utilisant ce nom de serveur.

J'espère que cela aide les gens qui font une erreur stupide comme moi.

Merci.

Denn
la source
7

J'utilise SQL Server 2016 et Windows 10.

entrez la description de l'image ici

La première chose est d'autoriser la connexion à distance à SQL Server. Ce que j'ai fait est de taper sqlservermanager13.msc dans le menu Démarrer afin d'ouvrir le Gestionnaire de configuration SQL Server. Assurez-vous que l'état TCP / IP est activé. entrez la description de l'image ici

Vérifiez votre numéro de port TCP en double-cliquant sur le nom du protocole TCP / IP. Il s'agit généralement de 1433 par défaut.

entrez la description de l'image ici

Les procédures suivantes configurent le pare-feu Windows à l'aide du composant logiciel enfichable MMC (Pare-feu Windows avec sécurité avancée Microsoft Management Console). Le pare-feu Windows avec fonctions avancées de sécurité configure uniquement le profil actuel.

Pour ouvrir un port dans le pare-feu Windows pour l'accès TCP

  1. Dans le menu Démarrer, cliquez sur Exécuter, tapez WF.msc, puis cliquez sur OK.
  2. Dans le Pare-feu Windows avec fonctions avancées de sécurité, dans le volet gauche, cliquez avec le bouton droit sur Règles entrantes, puis cliquez sur Nouvelle règle dans le volet d'actions.
  3. Dans la boîte de dialogue Type de règle, sélectionnez Port, puis cliquez sur Suivant.
  4. Dans la boîte de dialogue Protocole et ports, sélectionnez TCP. Sélectionnez Ports locaux spécifiques, puis tapez le numéro de port de l'instance du moteur de base de données, tel que 1433 pour l'instance par défaut. Cliquez sur Suivant.
  5. Dans la boîte de dialogue Action, sélectionnez Autoriser la connexion, puis cliquez sur Suivant.
  6. Dans la boîte de dialogue Profil, sélectionnez les profils décrivant l'environnement de connexion de l'ordinateur lorsque vous souhaitez vous connecter au moteur de base de données, puis cliquez sur Suivant.
  7. Dans la boîte de dialogue Nom, tapez un nom et une description pour cette règle, puis cliquez sur Terminer.

Une autre chose à configurer.

Pour ouvrir l'accès à SQL Server lors de l'utilisation de ports dynamiques

  1. Dans le menu Démarrer, cliquez sur Exécuter, tapez WF.msc, puis cliquez sur OK.
  2. Dans le pare-feu Windows avec fonctions avancées de sécurité, dans le volet gauche, cliquez avec le bouton droit sur Règles entrantes, puis cliquez sur Nouvelle règle dans le volet d'actions.
  3. Dans la boîte de dialogue Type de règle, sélectionnez Programme, puis cliquez sur Suivant.
  4. Dans la boîte de dialogue Programme, sélectionnez Ce chemin de programme. Cliquez sur Parcourir et accédez à l'instance de SQL Server à laquelle vous souhaitez accéder via le pare-feu, puis cliquez sur Ouvrir. Par défaut, SQL Server se trouve dans C: \ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ Sqlservr.exe. Cliquez sur Suivant.
  5. Dans la boîte de dialogue Action, sélectionnez Autoriser la connexion, puis cliquez sur Suivant.
  6. Dans la boîte de dialogue Profil, sélectionnez les profils décrivant l'environnement de connexion de l'ordinateur lorsque vous souhaitez vous connecter au moteur de base de données, puis cliquez sur Suivant.
  7. Dans la boîte de dialogue Nom, tapez un nom et une description pour cette règle, puis cliquez sur Terminer.

Jetez un oeil à Microsoft doucmentation Configurer un pare-feu Windows pour l'accès au moteur de base de données

Fred
la source
Sur mon PC Windows 10, l'instance de serveur SQL se trouve dans C: \ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Binn \ Sqlservr.exe
Mayer Spitzer
7

Vous pouvez tester les méthodes suivantes.

  • une

    1. Vérifiez la chaîne de connexion du projet.
  • b

    1. Accédez aux services et redémarrez l'instance SQLServer.
  • c

    1. Ouvrez 'SQLServer Configuration Manager'
    2. Dans le panneau de gauche, sélectionnez «Configuration du réseau SQLServer» et développez-le
    3. Sélectionnez «Protocoles pour MSSQLServer»
    4. Dans le panneau de droite, cliquez sur «TCP / IP»
    5. Dans l'onglet «Protocole», définissez «Activé» sur «Oui»
    6. Dans l'onglet «Adresses IP», faites défiler vers le bas
    7. Dans «IPAll», définissez «TCP Port» sur 1433
    1. Ouvrez «Pare-feu avec sécurité avancée»
    2. Dans l'onglet droit, sélectionnez «Règles de trafic entrant»

Dans l'onglet du milieu, trouvez l'enregistrement que «port local» est 1433, si vous ne le trouvez pas, essayez de le créer avec les niveaux suivants

  • Dans le menu Démarrer, cliquez sur Exécuter, tapez 'WF.msc', puis cliquez sur OK
  • Dans le panneau de gauche, cliquez sur «Pare-feu Windows avec sécurité avancée»
  • Dans le panneau de droite, cliquez avec le bouton droit sur «Règles de trafic entrant», puis cliquez sur «Nouvelle règle»
  • Dans la boîte de dialogue Type de règle, sélectionnez «Port», puis cliquez sur Suivant
  • Dans la boîte de dialogue Protocole et ports, sélectionnez «TCP», puis «Ports locaux spécifiques», puis tapez le numéro de port 1433, cliquez sur Suivant
  • Dans la boîte de dialogue Action, sélectionnez Autoriser la connexion, puis cliquez sur Suivant
  • Dans la boîte de dialogue «Profil», vérifiez le domaine, privé et public, puis cliquez sur Suivant
  • Dans la boîte de dialogue "Nom", saisissez "Port SQL 1433" et, pour une description, écrivez la description de votre choix. Cliquez ensuite sur Terminer
  1. Ensuite, dans l'onglet du milieu, double-cliquez sur l'élément trouvé (instance) ou l'élément créé du nom «Port SQL 1433» par vous.
  2. Sélectionnez l'onglet 'Étendue' dans la boîte de dialogue ouverte (Propriétés de SQL Server)
  3. Sur le PC local Accédez à google.com dans votre navigateur et recherchez «Mon IP».
  4. puis copie de votre 'IP'
  5. Accédez au serveur distant et dans la boîte de dialogue «Propriétés de SQL Server» de l'onglet «Étendue», dans «Adresse IP distante», sélectionnez l'option «Ces adresses IP» et cliquez sur le bouton «Ajouter»
  6. Dans la boîte de dialogue ouverte (adresse IP), sélectionnez l'option «Cette adresse IP ou sous-réseau» et collez votre «IP», cliquez sur le bouton OK.
MohammadSoori
la source
7

Cette solution résout à la fois les problèmes network error et le serviceserveur SQL derrière

J'ai répondu à une question similaire ici, vous devez statuer l'autre open Run type-> services.msc- sous services -> sort by stoppedvous verrez un tas de services SQL arrêtésRight click and start

Pour commencer - il y a 4 problèmes qui pourraient être à l'origine des erreurs de connectivité du serveur SqlExpress LocalDb courantes SQL Network Interfaces, error: 50 - Local Database Runtime error occurred , avant de commencer, vous devez renommer la v11 ou v12 en (localdb) \ mssqllocaldb


Troubleshooting Steps
  1. Vous n'avez pas les services en cours d'exécution exécutez cette cmd , net start MSSQLSERVERounet start MSSQL$ instancename
  2. Les ports du pare - feu ne sont pas configurés icientrez la description de l'image ici
  3. Votre installation a un problème / corrompu (les étapes ci-dessous vous aident à bien démarrer)
  4. Vous n'avez pas renommé le V11 ou 12 en mssqllocaldb / SqlServer

J'ai trouvé que le plus simple est de faire ce qui suit - j'ai joint les photos et les étapes pour obtenir de l'aide.


Resolution Steps:

Vérifiez d'abord quelle instance vous avez installée, vous pouvez le faire en vérifiant le registre et en exécutant cmd

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" si cette étape échoue, vous pouvez supprimer avec l'option dcmd> Sqllocaldb.exe d "someDb"
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png

transformateur
la source
5

Je rencontrais le même problème et le problème était que je hade plusieurs projets dans la solution ( Webet Droid) et même si a Default projectété choisi dans le, Package Manager Consoleil a utilisé la chaîne de connexion du Droidprojet:

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
<!-- BAD TARGET DATABASE -->
Target database is: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   [REMOVED TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Après avoir réglé le Startup Projectto Webet le Default Projectin, Package Manger Consoleje l'ai fait fonctionner.

Westerlund.io
la source
5

Je dois exécuter le service SQL Server Browser dans SQL Server Configuration Manager . L'installation ne peut pas découvrir le service nouvellement créé sans cela.

MarkosyanArtur
la source
1
Je n'y suis pas encore mais je me rapproche. Dans Visual Studio, après cela, déconnectez et reconnectez également, obtenant toujours la même erreur, mais maintenant au moins derrière VS2015, je ne peux pas créer de tables et les bases de données que je crée seam pour s'exécuter maintenant. (ea, aucune icône de croix sombre sur eux)
user3800527
1
note après votre commande, cela a abouti au nom du serveur sur une machine locale Démarrer> Exécuter> cmd> sqlcmd -L
user3800527
4

Alors que les solutions ci-dessus devraient fonctionner dans 90% des cas, mais si vous lisez toujours cette réponse !!! Vous essayez probablement de vous connecter à un serveur différent de celui prévu. Cela peut être dû à un fichier de configuration pointant vers un serveur SQL différent du serveur réel auquel vous pensez vous connecter.

Cela m'est arrivé au moins.

Arjmand
la source
1
Cela m'est arrivé aussi. Aurait dû vérifier cela avant de vérifier en essayant de diagnostiquer le pare-feu. J'avais la bonne chaîne de connexion, mais j'exécutais le mauvais projet dans la solution ...
VSO
4

Je suis passé d'un ordinateur portable professionnel sous Windows 7 à un ordinateur portable professionnel sous Windows 10. J'avais utilisé avec succès SSMS2016 sous Windows 7.

Le même problème s'est appliqué à l'aide de SSMS2012 ou SSMS2016. Mon accès aux 10 serveurs SQL utilisant l'authentification Windows était toujours le même. Je pourrais tester cela à partir d'un autre serveur. Cependant, 2 des 10 serveurs ne se connecteraient pas à partir de mon ordinateur portable . Les deux étaient ms sql server 9 mais je pouvais me connecter à d'autres bases de données sql server 9.

La solution était d' ajouter une règle de pare-feu (à l'aide du pare-feu Windows avec sécurité avancée).

Créez une règle entrante pour chaque SSMS, par exemple C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe

Je ne suis pas un expert du réseau, donc je n'ai pas inclus les détails mais j'espère que cela vous indiquera la bonne direction.


Error msg (pre firewall rule) "Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur n'a pas été trouvé ou n'était pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: SQL Network Interfaces, erreur: 26 - Erreur de localisation du serveur / de l'instance spécifiée) (.Net SqlClient Data Provider) "

JohnC
la source
4

Pourquoi cette erreur est si ennuyeuse et bruyante, simplement parce qu'elle peut se produire dans des situations variées.

J'ai fait toutes les démarches ci-dessus ici, et je suis toujours aspiré. Assurez-vous donc que vous avez fait la même chose que moi avant de naviguer vers le bas.

Peut-être que je ne suis pas en mesure de corriger votre situation instantanément, mais je peux vous indiquer une direction ou penser à vous (celui qui a finalement glissé ici). J'ai commencé à réfléchir à l'erreur de mon programme en cours d'exécution après m'être assuré que le nom de l'instance est clairement correct et définir ma base de données pour permettre le contrôle à distance en suivant les méthodes ci-dessus. Ensuite, j'ai soupçonné que quelque chose n'allait pas dans mon extrait de code de connexion SQL.

Solution de mon problème:

  • Vérifier ma fonction sqlconnection

  • Cliquez pour voir sa configuration

  • Nouvelle connexion

entrez la description de l'image ici

  • Sélectionnez le nom de votre serveur

entrez la description de l'image ici

Cela fonctionne pour moi en réfléchissant à ce qui se passe exactement dans le processus de connexion. J'espère que ma pensée vous conduira à tuer votre erreur.

Chase07
la source
Cela m'a aidé à trouver que j'avais besoin de SUPPRIMER le numéro de port pour une chaîne de connexion LocalDB, lors de l'utilisation d'Entity Framework.
ryanwebjackson
4

J'ai essayé toutes les autres réponses sur cette question et certaines, sinon toutes, ont probablement joué un rôle pour que cela fonctionne pour moi, mais je ne pouvais toujours pas me connecter à la base de données à distance. J'utilisais un serveur SQL sur une machine virtuelle Azure.

Je me suis finalement souvenu que la machine virtuelle avait des points de terminaison contrôlés par le proxy de compte Azure, alors je suis allé sur le portail Azure et j'ai ajouté 1433 comme point de terminaison disponible et je pouvais me connecter à mon instance SQL.

J'espère que cela aide quelqu'un qui a essayé toutes les autres réponses et qui n'a toujours pas de chance!

John
la source
4

Sommaire

Pour résoudre ce problème rencontré lors de l' exécution de l'application locale par rapport à la base de données distante , utilisez SQL Server Configuration Manager pour ajouter un alias pour la base de données distante.

Détails

J'avais rencontré ce problème récemment lors de la transition d'un Windows 7 vers un ordinateur portable Windows 10. J'exécutais un environnement de développement local et d'exécution accédant à notre base de données de développement sur un serveur distant. Nous accédons à la base de données Dev via une configuration d'alias de serveur via SQL Server Client Network Utility (cliconfg.exe). Après avoir confirmé que l'alias était correctement configuré dans les versions 64 et 32 ​​bits de l'utilitaire et que le serveur de base de données était accessible à partir du nouvel ordinateur portable via SSMS, j'ai toujours eu l'erreur vue par l'OP (pas l'adresse IP de l'OP, de cours).

Il était nécessaire d'utiliser SQL Server Configuration Manager pour ajouter un alias pour le serveur de base de données Dev distant. Correction des choses tout de suite.

entrez la description de l'image ici

Bill Needels
la source
4

Vous pouvez vérifier l'état du service de MS SQL Server 2014. Dans Windows 7, vous pouvez le faire en:

  1. Accédez à la recherche et tapez "Gestionnaire de configuration SQL Server 2014
  2. Cliquez ensuite sur "SQL Server Service" dans le menu de gauche
  3. Vérifiez l'instance de l'état du service SQL Server s'il est arrêté ou en cours d'exécution
  4. S'il s'est arrêté, veuillez modifier l'état en cours d'exécution et connectez-vous à SQL Server Management Studio 2014
Chamara
la source
3

Mon problème a commencé lorsque j'ai essayé de changer le serveur d' IIS Express en IIS local (lors de l'utilisation de LocalDB ).

entrez la description de l'image ici

J'utilisais LocalDB (à des fins de développement) et lorsque je suis allé pour revenir de Local IIS à IIS Express, Visual Studio avait changé ma source de données de Data Source = (LocalDb) \ MSSQLLocalDB à Data Source =. \ SQLEXPRESS

Chaîne de connexion incorrecte

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

Chaîne de connexion correcte

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" />

J'espère que cela aide quelqu'un là-bas.

megamaiku
la source
Ne faites pas non plus l'erreur idiote d'utiliser / au lieu de \ dans la chaîne de connexion.
andrew pate
3

En plus de tout essayer comme suggéré par Teo Chuen Wei Bryan, assurez-vous que vous faites également référence au nom de serveur / instance correct dans la chaîne de connexion.

Si vous utilisez la forme abrégée de nom d'hôte / instance sur le serveur de base de données ou dans le fichier web.config, assurez-vous d'utiliser le nom de domaine complet (FQDN) / instance

De plus, pour tester la connectivité à partir d'un serveur sur lequel le client SQL Server n'est PAS présent,

-> créer un fichier texte et changer son extension de fichier en .udl

-> Faites un clic droit sur le fichier et vous pouvez voir l'onglet de connexion.

-> Entrez le nom du serveur et connectez-vous pour tester la connexion au serveur de base de données.

J'espère que cela t'aides.

SanthoshM
la source
3

Si vous rencontrez soudainement cette erreur, par exemple dans un environnement de production et que rien n'a changé, essayez les 4 éléments suivants dans l'ordre ci-dessous pour voir s'ils sont corrigés.

  1. redémarrez le service du serveur SQL.
  2. redémarrez le service (par exemple IIS) qui appelle le serveur SQL. (le problème est probablement ici si le temps entre le début de l'appel de service au serveur SQL et le moment où vous obtenez l'erreur de réponse est très court (environ une ou deux secondes).
  3. redémarrez le serveur SQL Server est allumé.
  4. redémarrez le serveur sur lequel le service appelant est activé.
Barka
la source
3

Lorsque j'ai rencontré cette erreur dans Visual Studio,

«Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom d'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server) »

... c'était lors de l'exécution du code C # suivant, qui tentait d'obtenir mes données SQL Server pour les afficher dans une grille. La rupture s'est produite exactement sur la ligne qui indique connect.Open ():

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

C'était inexplicable car la requête SQL était très simple, j'avais la bonne chaîne de connexion et le serveur de base de données était disponible. J'ai décidé d'exécuter manuellement la requête SQL réelle dans SQL Management Studio et elle s'est très bien déroulée et a produit plusieurs enregistrements. Mais une chose ressortait dans les résultats de la requête: il y avait du texte HTML incorrectement encodé dans un champ de type varchar (max) dans la table Friends (en particulier, certains symboles de commentaire encodés du type <!--hébergé dans les données de la colonne "Narrative"). La ligne de données suspecte ressemblait à ceci:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

Notez le symbole HTML codé " &lt;", qui représentait un caractère "<". D'une manière ou d'une autre, cela a fait son chemin dans la base de données et mon code C # n'a pas pu le récupérer! Il a échoué à chaque fois directement sur la ligne connect.Open ()! Après avoir modifié manuellement cette ligne de données dans la table de base de données Friends et inséré le caractère "<" décodé à la place, tout a fonctionné! Voici à quoi cette ligne aurait dû ressembler:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

J'ai modifié la mauvaise ligne que j'avais en utilisant cette simple instruction UPDATE ci-dessous. Mais si vous aviez plusieurs lignes offensantes de code HTML codé, vous pourriez avoir besoin d'une instruction UPDATE plus élaborée qui utilise la fonction REPLACE:

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

Donc, la morale de l'histoire est (au moins dans mon cas), désinfectez votre contenu HTML avant de le stocker dans la base de données et vous n'obtiendrez pas cette erreur cryptique SQL Server en premier lieu! (Euh, assainir / décoder correctement votre contenu HTML fait l'objet d'une autre discussion digne d'une recherche StackOverflow distincte si vous avez besoin de plus d'informations!)

ShieldOfSalvation
la source
3

Essayez d'ajouter un ,et un numéro de port (comme dans ,1433) à la fin de votre chaîne de connexion.

Kalyan Hurkat
la source
3

L'arrangement des balises XML dans Web.config est important

Première

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

Après

<connectionStrings>
  <add name="SqlConnectionString" connectionString="Data Source=.; Initial Catalog=TestDB; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
pejman
la source
3

Dans ma situation, le service MSSQLSERVER avait un problème, j'ai donc redémarré le service et le problème a été résolu.

Je recommande donc d'accéder à l'application Services par: clé Windows, recherchez «Services» , puis recherchez votre instance SQL généralement «SQL Server (MSSQLSERVER)» sur pour Microsoft SQL Server. Faites un clic droit sur le service et cliquez sur Démarrer, si désactivé, cliquez sur Redémarrer.

Mohamad Reza Shahrestani
la source
2

Cette erreur se produit lorsque votre instance de serveur SQL est stopped.

Accédez à tous les programmes> SQL Server> Outils de configuration> SQL SERVER CONFIGURATION MANAGER

puis cliquez sur SQL sERVER SERVICES, la liste des instances apparaîtra, sélectionnez l'instance en question et cliquez sur l'icône de lecture dans la barre d'outils supérieure, j'espère que cela vous aidera.

cette réponse est très tardive (mais mieux vaut tard que jamais;)

Alex
la source
2

J'ai résolu ce problème en définissant le projet qui utilise Entity Framework comme projet de démarrage, puis j'exécute la commande "update-database".

user1796440
la source