web-dev-qa-db-fra.com

Pourquoi ai-je le message "Connexion au serveur impossible - Erreur liée au réseau ou à une instance"?

Je reçois le message d'erreur suivant lorsque je tente de me connecter à SQL Server:

Impossible de se connecter à 108.163.224.173.

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 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 générée lorsque j'essaie de configurer ma base de données pour 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?

337
Sasa Shree

J'ai trouvé les techniques suivantes utiles:

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

    • 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 distantes.
    • Activer les connexions locales et distantes
    • Redémarrer l'instance
  2. Vous devrez peut-être créer une exception sur le pare-feu pour l'instance et le port SQL Server que vous utilisez:

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

    • Sélectionnez 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 est sur le même réseau . Exécutez sqlcmd -L pour vérifier si votre serveur est inclus dans votre liste de réseaux.

  4. Activer TCP/IP dans la configuration SQL Server

    Lorsque deux serveurs SQL ou plus sont connectés sur le réseau, ils établissent 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 le Gestionnaire de configuration SQL Server. TCP/IP doit être activé pour que SQL Server soit connecté.

    • Allez sur 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 de la souris 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é.

281

J'ai la solution pour moi:

Ouvrez "Gestionnaire de configuration SQL Server"

Maintenant, cliquez sur "Configuration réseau SQL Server" et cliquez sur "Protocoles pour Nom "

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

Maintenant, sélectionnez l'onglet "Adresses IP" - et - Allez à la dernière entrée "IP All"

Entrez "Port TCP" 1433.

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

Ça va marcher...

106
Irshad Khan

Ajouter mon commentaire très voté comment 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) Ouvrir Gestionnaire de configuration de serveur SQL -> Configuration réseau de SQL Server -> Protocoles pour <(INSTANCE)> -> TCP/IP (double-cliquez dessus).

enter image description here

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

3) Aller à la dernière entrée IP All et mentionner TCP Port 1433 .

enter image description here

4) Appuyez sur Win+R et entrez services.msc .

5) Maintenant, redémarrez SQL Server <(INSTANCE)> .

enter image description here

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

87
user1336087

Je résous ce problème en ouvrant des services puis en cours d'exécution Sql Server (Sqlexpress) un service.

service Image

78
Anik Saha

Cette erreur survient principalement lorsque le service SQL est arrêté. Vous devez redémarrer le service. Pour accéder à cette fenêtre, vous devez effectuer une recherche dans les services comme ceci: enter image description here

Puis recherchez SQLSERVER (MSSQLSERVER) et redémarrez le service.

enter image description here

J'espère que cela fonctionnera.

19
Debendra Dash

Appuyez sur window + R (Run window Open) et dans le type de fenêtre d'exécution "services.msc", ainsi que sur les nouveaux services ouverts, recherchez SQL SERVER avec le nom de l'instance dans mon cas, il s'agit de SQL SERVER(SQLEXPRESS), puis démarrez ce service et essayez à nouveau, cela fonctionne pour moi. Toi aussi. enter image description here

13
Hafiz Asad

Si vous utilisez Express Edition:

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

par exemple. "MY-SERVER\SQLEXPRESS"

enter image description here

13
Abdulrahman Bres

J'ai eu la même erreur lorsque je voulais exécuter mon projet WinForms (cela inclut de travailler avec une base de données SQL Server et cela 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 ce problème en ajoutant deux règles. Voici la procédure à suivre 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 dans le fichier exe
  3. Ensuite, ouvrez firewall.cpl, cliquez sur Autoriser une application ou ajouter une règle, ajoutez le chemin précédemment copié (vous devez suivre une procédure), 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

11
NutCracker

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

10
eugen sunic

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 / N'a toujours pas fonctionné 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 identique à celui auquel vous essayez de vous connecter dans la zone CONNECT TO SERVER du studio de gestion SQL.

J'ai commis cette erreur stupide. Je continue à utiliser MSSQLSERVER plutôt à l'aide de ce nom de serveur.

J'espère que cela aidera les personnes qui commettent une erreur stupide comme moi.

Merci.

8
Denn

J'utilise SQL Server 2016 et Windows 10.

enter image description here

La première chose à faire 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é. enter image description here

Vérifiez votre numéro de port TCP en double-cliquant sur le nom du protocole TCP/IP. D'habitude c'est 1433 par défaut.

enter image description here

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

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

  1. Dans le menu Démarrer, cliquez sur Exécuter, tapez WF.msc et puis cliquez sur OK.
  2. Dans le volet gauche du Pare-feu Windows avec fonctions avancées de sécurité, cliquez avec le bouton droit sur Règles entrantes, puis cliquez sur Nouvelle règle dans le volet 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 et puis cliquez sur OK.
  2. Dans le volet gauche du Pare-feu Windows avec fonctions avancées de sécurité, cliquez avec le bouton droit sur Règles entrantes, puis cliquez sur Nouvelle règle dans le volet 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 d'accès au programme. Cliquez sur Parcourir, 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.

Consultez la documentation de Microsoft Configuration d'un pare-feu Windows pour l'accès au moteur de base de données

5
Fred

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 for MSSQLServer'
    4. Dans le panneau de droite, cliquez sur 'TCP/IP'
    5. Dans l'onglet "Protocole", réglez "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 de droite, sélectionnez 'Règles entrantes'

Dans l'onglet du milieu, recherchez l'enregistrement indiquant que 'Port local' correspond à 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 de la souris sur "Règles entrantes", puis 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", cochez la case Domaine, Privé et Public, puis cliquez sur Suivant.
  • Dans la boîte de dialogue "Nom", tapez "SQL 1433 Port" et pour une description, écrivez une description pour propre. Puis cliquez sur Terminer
  1. Ensuite, dans l'onglet du milieu, double-cliquez sur l'élément trouvé (Instance) ou sur l'élément créé du nom de 'Port SQL 1433' que vous avez nommé.
  2. Sélectionnez l'onglet "Portée" dans la boîte de dialogue ouverte (Propriétés de SQL Server)
  3. Sur le PC local Allez sur google.com dans votre navigateur et recherchez "Mon IP".
  4. puis une copie de votre adresse IP
  5. Allez sur le serveur distant et dans la boîte de dialogue "Propriétés 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 (Adresse IP) ouverte, sélectionnez l'option "Cette adresse IP ou ce sous-réseau" et collez votre "IP", puis cliquez sur le bouton OK.
4
MohammadSoori

Je rencontrais le même problème et le problème était que j'avais plusieurs projets dans la solution (Webet Droid) et même si Default project avait été choisi dans le Package Manager Console il utilisait le Chaîne de connexion du projet Droid:

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 Project sur Web et le Default Project dans Package Manger Console, je l’ai obtenu.

4
Jefecito

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

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

La solution consistait à ajouter une règle de pare-fe (à 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, je n'ai donc pas inclus les détails, mais j'espère que cela vous orientera dans 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 était introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: interfaces de réseau SQL, erreur: 26 - Erreur lors de la localisation du serveur/de l’instance spécifiée) (fournisseur de données .Net SqlClient) "

3
johnc

J'ai essayé toutes les autres réponses à cette question et certaines, sinon toutes, ont probablement joué un rôle dans l'obtention de cette solution 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 VM avait des points de terminaison contrôlés par le proxy du compte Azure. Je suis donc allé sur le portail Azure, j'ai ajouté 1433 en tant que 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!

3
John

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

  1. Allez à la recherche et tapez "SQL Server 2014 Configuration Manager
  2. Puis cliquez sur "Service SQL Server" dans le menu de gauche
  3. Vérifiez l'instance de l'état du service SQL Server si elle est arrêtée ou en cours d'exécution
  4. S'il s'est arrêté, modifiez le statut en cours d'exécution et connectez-vous à SQL Server Management Studio 2014
3
Chamara

Je dois exécuter Navigateur SQL Server service dans Gestionnaire de configuration SQL Server. L'installation ne peut pas découvrir le service nouvellement créé sans cela.

3
MarkosyanArtur

Résumé

Pour résoudre ce problème rencontré lors de l'exécution d'une application locale par rapport à une base de données distante , utilisez le Gestionnaire de configuration SQL Server 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 ordinateur portable Windows 7 vers un ordinateur portable Windows 10. J'exécutais un environnement de développement et d'exécution local accédant à notre base de données Dev sur un serveur distant. Nous accédons à la base de données Dev via un alias de serveur configuré via l'utilitaire réseau du client SQL Server (cliconfg.exe). Après avoir vérifié que le pseudonyme é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 le Gestionnaire de configuration SQL Server pour ajouter un alias pour le serveur de base de données Dev distant. Correction des choses.

enter image description here

3
Bill Needels

Cette solution résout également les erreurs de réseau et le service derrière le serveur SQL

J'ai répondu à une question similaire ici, vous devez déclarer l'autre _open Run type-> services.msc_ - sous services -> sort by stopped, vous verrez un groupe de services SQL arrêtés _Right click and start_

Pour commencer - il y a 4 problèmes qui pourraient causer le commun LocalDb SqlExpress Sql Server erreurs de connectivité _SQL Network Interfaces, error: 50 - Local Database Runtime error occurred_, avant de commencer devez renommer la v11 ou la v12 en (localdb)\mssqllocaldb

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

Tout d’abord, vérifiez quelle instance vous avez installée. Pour ce faire, vous devez vérifier 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 d cmd> Sqllocaldb.exe d "someDb"
  3. _cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"_
  4. _cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"_

SqlLOCALDb_edited.png

3
transformer

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 sur un serveur SQL différent de celui sur lequel vous pensez vous connecter.

Arrivé à moi au moins.

3
Arjmand

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

J'ai fait toutes les démarches ci-dessus, et toujours être aspiré. Assurez-vous donc que vous avez fait comme moi avant de naviguer vers le bas.

Peut-être que je ne suis pas capable de corriger votre situation instantanément, mais je peux indiquer une direction ou penser à u (Celui qui a finalement glissé ici) . J'ai commencé à réfléchir à l'erreur de mon programme en cours après que je me suis assuré que le nom de l'instance est clairement correct et que ma base de données soit configurée pour permettre le contrôle à distance en suivant les méthodes ci-dessus. Après cela, Je soupçonnais que quelque chose de faux se passait dans mon extrait de code de la connexion SQL.

Solution de mon problème:

  • Vérifier ma fonction sqlconnection

  • Cliquez pour voir sa configuration

  • Nouvelle connexion

enter image description here

  • Sélectionnez le nom de votre serveur

enter image description here

Cela me permet de réfléchir à ce qui se passe exactement dans le processus de connexion. J'espère que ma pensée vous mènera à tuer votre erreur.

3
Chase07

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

Si vous utilisez la forme abrégée 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 nom de domaine pleinement qualifié (FQDN)/Instance

De plus, pour tester la connectivité d’un serveur où le client SQL Server n’est PAS présent,

-> crée un fichier texte et change son extension en . udl

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

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

J'espère que cela t'aides.

2
SanthoshM

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

2
Kalyan Hurkat

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

"Une erreur liée au réseau ou spécifique à une instance 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 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 coupure s'est produite exactement sur la ligne qui dit 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 proprement dite dans SQL Management Studio. La requête a fonctionné correctement et a généré plusieurs enregistrements. Une chose s’est toutefois dégagée dans les résultats de la requête: il y avait du texte HTML mal codé dans un champ de type varchar (max) de la table Friends (en particulier, certains symboles de commentaire codés de la sorte <!-- logés dans la "Narrative" données de la colonne). La ligne de données suspecte ressemble à ceci:

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

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

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

J'ai édité la seule mauvaise ligne que j'avais à l'aide de cette simple instruction UPDATE ci-dessous. Toutefois, si vous avez plusieurs lignes HTML codées problématiques, vous aurez peut-être besoin d'une instruction UPDATE plus élaborée utilisant la fonction REPLACE:

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

Ainsi, la morale de l'histoire est (du 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 de SQL Server! (Euh, bien désinfecter/décoder votre contenu HTML fait l’objet d’une autre discussion digne d’une recherche distincte StackOverflow si vous avez besoin de plus d’informations!)

2

L'agencement 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>
2
user7339584

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

enter image description here

J'utilisais LocalDB (à des fins de développement), et lorsque je suis revenu à Local IIS à IIS Express, Visual Studio avait basculé ma source de données de Source de données = (LocalDb)\MSSQLLocalDB à Source de données =.\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.

2
megamaiku

Si vous rencontrez soudainement cette erreur dans un environnement de production et que rien n’a changé, essayez les 4 éléments suivants dans l’ordre ci-dessous pour voir si elle est corrigée.

  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 là si le temps entre le début de l'appel de service sur le serveur SQL et le moment où vous obtenez l'erreur de réponse est très court (environ une ou deux secondes).
  3. redémarrer le serveur SQL Server est activé.
  4. redémarrez le serveur sur lequel le service d’appel est activé.
2
Barka

Mon problème était que vous devez avoir une entrée de chaîne de connexion dans les deux votre couche de référentiel et votre couche Web. Une fois que je l'ai ajouté à mon web.config ainsi que mon app.config, Entity Framework a pu créer la migration.

Ma question est de savoir pourquoi, le Web.config en a besoin, alors qu’il n’ya absolument aucun accès à la base de données.

1
Thing

Il semble que votre instance de localdb ne soit pas en cours d'exécution. Pour le démarrer au démarrage de l'ordinateur, ajoutez-y le fichier BAT du menu Démarrer\Dossier de démarrage avec la ligne suivante

sqllocaldb start name_of_instance

name_of_instance est le nom de l'instance localdb que vous souhaitez démarrer. Vous pouvez répertorier les instances disponibles en ligne de commande à l'aide de sqllocaldb i.

par exemple. Si vous utilisez SQL Server Management Studio et que vous vous connectez au nom du serveur (localdb)\v11.0 _, votre fichier BAT ressemblera à

sqllocaldb start v11.0
1
Ondrej

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.

Donc, je recommande d'aller à l'application Services par: touche Windows, recherche "Services", puis recherchez votre instance SQL habituellement "SQL Server (MSSQLSERVER)" à pour Microsoft SQL Server . Cliquez avec le bouton droit sur le service et cliquez sur Démarrer. S'il est désactivé, cliquez sur Redémarrer.

1

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

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-la en question et cliquez sur l'icône de lecture en haut de la barre d'outils, en espérant que cela aidera.

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

1
Alex

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

1
user1796440

Si vous rencontrez ce problème lors du débogage dans Visual Studio, assurez-vous que le chemin de génération du projet pointe vers un lecteur local ou suivez ces étapes pour accorder des autorisations sur le dossier réseau.

1
Kevin D.

J'ai également eu ce problème, j'ai essayé tout ce qui est suggéré dans ce post, mais rien n'a fonctionné. Enfin, j'ai résolu mon problème en exécutant cette requête dans SQL Server.

EXEC sp_configure 'remote access', 0 ;  
GO  
RECONFIGURE ;  
GO  
0
Shaiwal Tripathi

Cela pourrait aussi être aussi simple que le fait que votre base de données n'est pas réellement MS SQL Server. Si votre base de données est en fait MySql, par exemple, et que vous essayez de vous y connecter avec System.Data.SqlClient, vous obtiendrez cette erreur.

La plupart des exemples de ADO.Net seront pour MSSQL et l'utilisateur inexpérimenté peut ne pas savoir que vous ne pouvez pas utiliser SqlConnection, SqlCommand, etc., avec MySql.

Bien que tous les fournisseurs de données ADO.Net soient conformes à la même interface, vous devez utiliser le fournisseur créé pour votre base de données.

0
Crowcoder