web-dev-qa-db-fra.com

Comment corriger l'erreur 'Fournisseur de canaux nommés, erreur 40 - Impossible d'ouvrir une connexion à' SQL Server '?

Je n'arrive pas à me connecter à ma base de données depuis un site. Je reçois cette erreur:

Fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server

J'ai essayé d'utiliser l'adresse IP locale pour vous connecter, ainsi qu'une adresse publique. J'ai essayé:

  1. Oui, le site peut communiquer avec le serveur.
  2. Les tubes nommés/TCP sont activés.
  3. Les connexions à distance sont autorisées.
  4. Pare-feu Windows est désactivé
  5. Création d'une exception pour le port 1433 dans le pare-feu Windows.
  6. Tout activé dans le Gestionnaire de configuration SQL Server.

Que puis-je faire ici?

116
Damien

Résoudre ce problème est très facile:

  1. Allez au panneau de contrôle.
  2. rechercher des services.
  3. Ouvrez la fenêtre Services locaux à partir des résultats de votre recherche.
  4. Redémarrez votre service MSSQLSERVER.

Capture d'écran des étapes:

Screenshot of the steps

101
Kazem

Et la solution la plus simple: vérifiez si votre slash est de retour ... 

J'ai passé environ une heure à essayer de comprendre ce qui n'allait pas avec SERVER/INSTANCENAME lorsque tout était configuré correctement, des tubes nommés, des droits d'accès utilisateur ... et tout à coup, ça m'a frappé, ce n'est pas une barre oblique, mais un barre oblique inverse (\).

L'horreur, la honte ...

72
mizuki nakeshu

C'est vraiment un processus en trois étapes après l'installation de SQL Server:

  1. Activer les canaux nommés Gestionnaire de configuration SQL -> SQL Server Network Consif -> Protocoles -> Canaux nommés -> Clic droit -> Redémarrer

 named pipes enabled

  1. Redémarrez le serveur Gestionnaire de configuration SQL -> Services SQL Server -> SQL Server (SQLEXPRESS) -> Cliquez avec le bouton droit de la souris -> Redémarrer

  2. Utilisez les noms de serveur et d’instance appropriés (les deux sont nécessaires!) Généralement, il s’agit de .\SQLEXPRESS, par exemple, voir la capture d’écran de la boîte de dialogue de connexion QueryExpress.

 enter image description here

Voilà.

34
Pompair

Je venais d'installer SQL SERVER 2012 Developer. Lors de la création de mon premier package SSIS, j'ai reçu cette erreur de canal lorsque j'essayais de créer une tâche de connexion de données dans SQL Server 2012 Data Tools dans la zone du gestionnaire de connexion. J'ai résolu avec l'aide de la poste ci-dessus. 

Si vous choisissez une instance nommée et que vous appelez votre instance nommée SSQDatabase1 et que le nom de votre ordinateur est PCX1. Vous devez entrer PCX1\SSQDatabase1 et pas seulement SSQDatabase1 .__ ou vous recevrez l'erreur des canaux nommés. 

17
rockz1

Un fil sur MSDN Social, Objet: Fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server, contient une liste assez bonne de problèmes possibles liés à votre erreur. Vous voudrez peut-être voir si l'un d'entre eux pourrait être ce que vous vivez.

  • Chaîne de connexion incorrecte, telle que l'utilisation de SqlExpress
  • Named Pipes (NP) n'a pas été activé sur l'instance SQL
  • La connexion à distance n'a pas été activée
  • Le serveur n'est pas démarré ou ne pointe pas vers un serveur réel dans votre chaîne de connexion
  • Autres raisons telles qu'un contexte de sécurité incorrect
  • essayez des tests de connectivité de base entre les deux machines sur lesquelles vous travaillez
15
Khan

je viens d’activer TCP/IP, VIA, Tubes nommés dans Gestionnaire de configuration Sql Server, Mon problème a été résolu, consultez cette information pour plus d’informations Résolution des erreurs des tubes nommés Erreur 40

9
Samanth

Utiliser SERVEUR \\ INSTANCE NAME .Utiliser une double barre oblique inversée dans mon projet a résolu mon problème.

7
Tamizh venthan

Merci à Damian ...

TCP/IP Named Pipes ... les deux activés

Web Config .... (pour localhost)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
5
Terri

A eu le même problème. Passé comme 6 heures quand dû migrer certains serveurs . Essayé toutes les suggestions disponibles sur ce sujet et d'autres.

La solution était aussi simple que le redémarrage du serveur!

5
halloweenlv

dans mon cas, j'avais un serveur autonome, j'ai changé le port par défaut du port du serveur SQL 1433 dans le gestionnaire de configuration en un certain nombre et redémarré le service SQL pour prendre effet. au serveur. mais je ne pouvais pas me connecter à partir de ma machine locale via le serveur SQL, je recevais l'erreur:

Une erreur liée au réseau ou à une instance spécifique s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et 

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: 5)

J'ai vérifié et vérifié tout ce qui précède

-Les canaux nommés/TCP sont activés .- Les connexions distantes sont autorisées .- Le pare-feu Windows est désactivé réseau de sous-réseau) .- Tout activé dans le Gestionnaire de configuration SQL Server.

puis j'ai vérifié le numéro de port par défaut à 1433 par défaut et redémarré le service du serveur SQL. Le problème a été résolu et je suis en mesure de connecter le serveur SQL à partir de mon studio de gestion local.

3
balu

J'ai eu le même problème. J'utilise MSSQL Server Management Studio 2017 et j'ai résolu ce problème en procédant comme suit:

  1. Vérifiez le bon fonctionnement des services SQL Server Services ou non.
  2. Vérifiez également le bon fonctionnement de SQL Server (MSSQLSERVER).
  3. Vérifiez également le bon fonctionnement de SQL Server Browser.
  4. Redémarrez SQL Server (MSSQLSERVER)

et l'a fixé.

3
Murat

Essayez les étapes suivantes:

  1. Ouvrez la fenêtre Services (ouvrez la "boîte d’exécution" et tapez services.msc).

  2. Recherche de services SQL (avec préfixe SQL).

  3. Démarrez-les (si vous ne pouvez pas commencer. Passez à l'étape 4).

  4. Cliquez avec le bouton droit de la souris sur chaque service -> Propriétés -> Aller à l’onglet "Connexion" -> choisir de vous connecter comme "Local ..." -> 0K. Puis redémarrez les services SQL.

Essayez Open SQL et connectez la base de données.

1
Harry Ho

Si vous travaillez avec Asp.net core et utilisez appsettings.json, écrivez le serveur en tant que localhost et après l'écriture du nom d'instance SQL pour le canal nommé activé comme celui-ci.

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },
1
dewelloper

Vous constaterez probablement que votre nom de base de données n’est pas correct, vous verrez le nom du serveur dans VS tel que "DESKTOP-0I14BKI" mais si vous ouvrez SSMS, vous verrez DESKTOP-0I14BKI\SQLBLAHBLAH} _ _, ajoutez simplement \ SQLBLAHBLAH "(nom d'instance) à votre" nom de serveur "dans les propriétés de connexion VS.

Tu verras:  enter image description here

À corriger: enter image description here

1
scott

J'ai essayé à peu près tout sur cette page, mais j'avais des problèmes sous-jacents qui étaient en fait ce qui devait être résolu. Certaines tâches, telles que l'ouverture du Gestionnaire de configuration SQL Server, sont devenues des fichiers de fournisseur WMI corrompus ou manquants.

Il existe de nombreux moyens fastidieux de résoudre ce problème en fonction de ce que j'ai lu, mais l'outil de tweaking.com a pu supprimer et remplacer/réparer les fichiers de mon fournisseur WMI (Windows Management Instrumentation).

J'avais l'habitude de réparer un ordinateur et globalement, l'outil tweaking.com m'a vraiment impressionné, et cela a été suggéré à partir de l'une des pages du forum sur les erreurs WMI que j'ai consultées.

Après avoir résolu ce problème, j'ai pu me connecter à ma base de données SQL, à la fois localement et à distance.

J'espère que ça aide quelqu'un.

0
Elon Zito

Je me suis battu pendant des siècles sur ce sujet avant de comprendre mon erreur: j'avais utilisé des virgules au lieu de points-virgules dans la chaîne de connexion

0
Andy

J'ai une autre solution, je pense… .. J'ai récemment changé le nom de mon ordinateur, donc je ne pouvais toujours pas me connecter après avoir essayé toutes les méthodes ci-dessus . J'ai changé le nom du serveur ... > (recherchez plus) => sous le moteur de base de données, un nouveau serveur a été trouvé, identique au nouveau nom de l'ordinateur . Cela a fonctionné et la vie est redevenue belle.

0
appstauq

J'ai suggéré ci-dessous la procédure à suivre pour résoudre votre problème Comment corriger l'erreur 'Fournisseur de canaux nommés, erreur 40 - Impossible d'ouvrir une connexion à' SQL Server '

  1. Vérifiez le bon fonctionnement Services de services SQL Server ou pas.
  2. Vérifiez également que vous travaillez correctement SQL Server (MSSQLSERVER) .
  3. Vérifiez également le bon fonctionnement Navigateur SQL Server .
  4. Supprimer tous les précédents Alias ​​, créez maintenant de nouveaux alias selon vos besoins.
  5. Maintenant, vérifiez le fonctionnement de SQL Server Par défaut Port 1433
  6. Cliquez ensuite sur Client Protocols in instance, puis sur TCP/IP , maintenant cliquez avec le bouton droit de la souris, ouvrez la propriété. Vous pouvez vous assurer ici que votre port par défaut fonctionne correctement SQL 1433 .
  7. Ouvrez votre SQL Server Management Studio , puis faites un clic droit, cliquez sur l’option " Propriété ", puis cliquez sur Connexions onglet, puis cochez la case pour Autoriser les connexions distantes à ce serveur .
  8. Vérifiez le bon fonctionnement ou votre Ping IP Host .
0
Anjan Kant

Activez le protocole Piped TCP/Ip en accédant à Gestion de l’ordinateur -> SQL et services, assurez-vous que le service est activé. Renforcez le port sur le pare-feu. Essayez de vous connecter via Invite de commandes -> en tant qu'administrateur; En dernier, le nom d'utilisateur .__ devrait être (local)\SQLEXPRESS. J'espère que cela t'aides.

0
VaishB

J'ai eu ce problème, mais aucune des suggestions ci-dessus ne l'a résolu. 

Je voyais ce problème lorsque j'ai déployé mon site Web pour IIS. Le correctif consistait à définir des paramètres avancés dans le pool d'applications par défaut et à remplacer la propriété d'identité par défaut par la valeur administrateur. 

0
Ste Brown

Solution très simple 

use (local)\InstanceName that it.it a fonctionné pour moi.

0
ProgrammingNinja

J'ai eu le même problème et résolu le problème en désactivant mon pare-feu (ESET).

La première étape pour résoudre ce problème devrait être d’essayer d’envoyer une requête ping à votre propre ordinateur à partir d’un autre ordinateur. Si le pare-feu est activé, vous ne pourrez peut-être pas vous envoyer de commandes ping. J'ai essayé de faire un ping sur mon propre PC, puis le ping a échoué (je n'ai pas eu de réponse du serveur)

0
Uğur Gümüşhan

Pour moi, c'était un problème de pare-feu.

Vous devez d’abord ajouter le port (comme 1444 et peut-être 1434), mais aussi 

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

et 

%ProgramFiles%\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQLAGENT.EXE

La deuxième fois que j'ai eu ce problème, c'est quand je suis revenu au pare-feu, les chemins n'étaient pas corrects et je devais mettre à jour les formulaires 12 à 13! Un simple clic sur Parcourir dans l'onglet Programmes et Services a permis de réaliser cela.

Enfin, essayez d’exécuter la commande

EXEC xp_readerrorlog 0,1, "n'a pas pu enregistrer le nom principal du service", Null

Pour moi, il a renvoyé la raison de l'erreur

0
Dave

TL; DR; Votre instance SQL Server utilise des ports dynamiques qui ne fonctionnent pas. Forcer SQL Server à utiliser le port statique n ° 1433.

Complete Details : Tout d'abord, ce problème est plus probable si vous avez un mélange d'instance nommée et par défaut ou d'instances nommées uniquement (ce qui était mon cas).

Concept clé : chaque instance de Microsoft SQL Server installée sur un ordinateur utilise un port différent pour écouter les demandes de connexion entrantes. L'instance par défaut de SQL Server utilise le port 1433. Lorsque vous installez des instances nommées, elles commencent à utiliser des ports dynamiques définis au moment du démarrage du service Windows correspondant à l'instance nommée SQL Server.

Mon code ne permettait pas (avec le code d'erreur 40) de se connecter à la seule instance SQL Server nommée que j'avais sur ma machine virtuelle. Vous pouvez essayer ci-dessous les solutions possibles:

Solution n ° 1 : Le code client qui tente de se connecter à une instance SQL Server prend l'aide du service de navigateur SQL Server pour déterminer le numéro de port sur lequel votre instance nommée écoute les connexions entrantes. Assurez-vous que le service de navigateur SQL est en cours d'exécution sur votre ordinateur.

Solution n ° 2 : Vérifiez le numéro de port (en jaune) utilisé par votre instance SQL Server nommée à partir du gestionnaire de configuration SQL Server, comme indiqué dans l'instantané ci-dessous:

 enter image description here 

Utilisez ce numéro de port explicitement dans votre chaîne de connexion ou avec sqlcmd comme indiqué ci-dessous:

sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt

Solution n ° 3 : forcez votre instance nommée à utiliser le port n ° 1433 utilisé par l'instance par défaut. N'oubliez pas que cela ne fonctionnera que si vous n'avez pas d'instance SQL Server par défaut sur votre ordinateur, car l'instance par défaut de SQL Server utiliserait déjà le port n ° 1433. Le même numéro de port ne peut pas être utilisé par deux services Windows différents.

Marquez le champ TCP Dynamic ports en blanc et le champ TCP Port en 1433.

 enter image description here 

Modifiez le numéro de port dans votre chaîne de connexion comme indiqué ci-dessous:

sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt

OU

sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt

Remarque : chaque modification des paramètres TCP/IP nécessite le redémarrage du service Windows correspondant.

Fait assez intéressant après la résolution de l'erreur lorsque je suis revenu au paramétrage du port dynamique pour reproduire la même erreur, elle ne s'est pas produite. Pas certain de pourquoi.

Veuillez lire ci-dessous des discussions intéressantes pour en savoir plus sur les ports dynamiques de SQL Server:

Comment configurer le port SQL Server sur plusieurs instances?

Quand un port dynamique est-il "dynamique"?

Quand utiliser un TCP port dynamique et quand TCP Port?

J'ai eu des pistes pour résoudre mon problème de this blog.

0
RBT

Dans mon cas, J'ai ouvert SQL Server Management Studio et recherché SQLEXPRESS dans mon moteur de base de données. Il y avait deux instances et j'ai sélectionné le bon.

 enter image description here

0
DivyaMenon

Ouvrez le Gestionnaire de configuration SQL Server

  1. Sélectionnez Services SQL Server de droite.
  2. Trouvez votre serveur de droite et accédez à ses propriétés (avec un clic droit)
  3. Changer la méthode de connexion sur Système local.

enter image description here

enter image description here

0
zapoo

J'essayais d'ajouter une nouvelle connexion dans VS2015. Aucune des suggestions ici n'a fonctionné. Suspectant une sorte de bogue dans l'assistant, d'autant plus que SSMS était capable de se connecter très bien, j'ai décidé d'essayer de le tromper. Ça a marché!

  1. Au lieu d’ajouter la connexion, utilisez "Créer une nouvelle base de données SQL Server". Entrez votre nom de serveur et un nom aléatoire pour la nouvelle base de données, par exemple. "tester".

  2. En supposant que cela réussisse, ouvrez l'Explorateur de serveurs dans VS, localisez la connexion dans Connexions de données, cliquez dessus avec le bouton droit de la souris et sélectionnez Modifier la connexion.

  3. Remplacez "test" (à partir de l'étape 1) par le nom de la base de données existante à laquelle vous souhaitez vous connecter. Cliquez sur "Tester la connexion". Cette fois, ça devrait marcher!

  4. Supprimez la base de données temporaire créée à l'étape 1.

0
Roman Starkov

Si vous avez essayé de redémarrer le service MSSQLSERVER et que cela n'a pas fonctionné, cela pourrait être une solution:

Si vous utilisez SQLExpress, le nom de votre serveur doit correspondre au nom d'ordinateur suivant\SQLExpress. Cependant, pour SQLDeveloper, il n'est pas nécessaire de redresser SQLDeveloper après votre nom d'ordinateur.

0
Asim Okby

Après avoir suivi toutes les étapes mentionnées ici , s’il ne se connecte toujours pas, essayez d’ajouter le DNS avec l’adresse IP dans le fichier hosts du dossier etc. L'ajout d'une adresse IP au lieu d'un nom DNS dans la chaîne de connexion devrait constituer une solution temporaire pour vérifier si la connexion fonctionne réellement.

0
user3307830

ouvrez le numéro de port 1433 sur votre serveur pour une connexion distante SQL

0
Hamid Jolany

J'ai essayé d'utiliser l'adresse IP locale pour vous connecter, ainsi qu'une adresse publique . J'ai essayé:

Oui, le site peut communiquer avec le serveur Named pipes/TCP is activée. Les connexions à distance sont autorisées. Le pare-feu Windows est désactivé Création d'une exception pour le port 1433 dans le pare-feu Windows. Activée tout dans le Gestionnaire de configuration SQL Server.

j'ai assuré et fait ce qui précède aussi et je veux juste partager que le DOUBLE BACKSLASH 

oBuilder.DataSource = "SPECIFICPCNAME\SQLEXPRESS";

L’utilisation d’un SINGLE BACKSLASH donnait lieu à une erreur de construction, à savoir: Erreur 1 Séquence d’échappement non reconnue 

J'espère que cela aidera le prochain gars - j'ai sacrifié le dîner, le goûter de minuit et la NBA met le temps de résoudre ce problème (dommage)

Merci à [Tamizh venthan] ^ _ ^

0
Ronan Masangcay