Question

Une erreur s'est produite lors de l'établissement d'une connexion au serveur. Lors de la connexion à SQL Server 2005, cet échec peut être dû au fait que, dans les paramètres par défaut, SQL Server n'autorise pas les connexions à distance. (fournisseur: fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server)

Bonjour, je suis novice dans le développement sur SQL Server 2005. Je travaille depuis plusieurs années avec SQL Server 2000, mais après avoir effectué les opérations habituelles pour me connecter au serveur, cette exception figure sur le serveur Web.

Il existe plusieurs liens sur Google qui me dirigent vers des solutions possibles, mais aucun d’entre eux n’a résolu mon problème. J'ai effectué des modifications sur une "surface quelconque ...". dialogue (Qu'est-ce que c'est que ça? ??? Pourquoi SQL Server a tellement changé ??? Cela semble tellement compliqué maintenant).

Je me suis assuré que SQL Server 2005 est configuré correctement pour autoriser les connexions entrantes sur l'instance du serveur de base de données. J'ai également sélectionné Automatique comme type de démarrage pour démarrer le service SQL Server Browser automatiquement à chaque démarrage du système. Et non, il n'y a pas de pare-feu en cours d'exécution.

J'ai essayé de changer la chaîne de connexion pour se connecter à l'aide d'un port, se connecter à l'aide de l'IP, se connecter à l'aide du nom d'instance ...

Rien ne semble fonctionner, je reçois toujours la même erreur. Un indice?

Répondre aux questions que les gens ont posées: Oui, je peux me connecter à l'aide du studio de gestion à partir d'un autre ordinateur. Oui, je suis sûr qu'il est configuré pour accepter les canaux TCP / IP et nommés locaux et distants. Oui, j'ai redémarré le serveur.

J'utilise la sécurité en mode mixte, que j'ai déjà activée. J'ai déjà activé l'utilisateur sa. Je peux me connecter à la base de données à l'aide d'un fichier .udl et j'ai vérifié que ma chaîne de connexion était correcte. Je peux me connecter à la base de données à l'aide des outils clients DBArtisan et SQL Server. Je peux le faire à la fois sur le serveur et sur une machine différente. Même avec tout ça ...

Le site Web ne parvient toujours pas à se connecter.

Nouvelle mise à jour ... J'ai eu toute la journée à me battre avec ce problème et je n'ai toujours pas trouvé la cause. Il semble que le message d'erreur que j'ai posté soit une erreur générique que .net donne lorsqu'il est impossible de se connecter. J'ai placé la corbeille sur la chaîne de connexion (en tapant des serveurs qui n'existent pas) et j'obtiens toujours la même erreur.

Voici certaines des chaînes de connexion que j'ai utilisées sur le serveur:

connectionString = " Sécurité intégrée = SSPI; Source de données = SERVEUR; Catalogue initial = db; Bibliothèque réseau = DBMSSOCN; "

connectionString = " Source de données = SERVEUR; Catalogue initial = db; ID utilisateur = sa; Mot de passe = xxxxx; "

connectionString = " Source de données = SERVEUR \ MSSQLSERVER; Catalogue initial = db; ID utilisateur = sa; Mot de passe = xxxxx; "

J'ai essayé d'enregistrer l'instance de serveur SQL en utilisant une commande étrange, j'ai trouvé cela ici: http://kb.discountasp.net/article.aspx?id=1041 Pour ce faire, j'ai utilisé l'outil aspnet_regsql.exe. Cela ne fonctionne toujours pas ...

Je sais aussi que la dernière version de MDAC est installée sur le serveur. La seule chose sur laquelle je me méfie, c’est que le serveur a deux moteurs de base de données: SERVER et server \ sqlexpress

Cela a-t-il quelque chose à voir avec le problème?

Était-ce utile?

La solution 9

J'ai corrigé le problème que j'avais avec la connexion. Le problème était sur ma demande. Le problème était dû au fait qu’une chaîne de connexion à la base de données de développement (au lieu de la production) avait été codée en dur par l’un des dialogues générant les jeux de données. Cette boîte de dialogue a placé la chaîne de connexion à la fois sur le fichier web.config et sur un fichier de code source masqué appelé "Settings.settings.cs". Le problème a été résolu en fixant la chaîne de connexion au bon emplacement.

Le message d'erreur était totalement trompeur, mais j'ai pu le constater en suivant toutes les méthodes présentées dans la trace de la pile.

Donc, si jamais vous trouvez ce message d'erreur, les causes possibles sont innombrables. Votre premier pari consiste à suivre les étapes habituelles pour cette erreur, qui consistent à vérifier que le serveur autorise les connexions distantes et locales et à redémarrer le service du navigateur.

Si cela ne fonctionne pas, vérifiez la trace de la pile, recherchez le code qui se trouve dans votre application, mettez-y un point d'arrêt et explorez toutes les propriétés de la chaîne de connexion. Au moins c'est comme ça que je l'ai résolu.

Autres conseils

  

La seule chose sur laquelle je me méfie, c'est que le serveur a deux moteurs de base de données: SERVEUR et serveur \ sqlexpress

.

Je pense que c'est la source du problème. Lequel avez-vous l'intention de vous connecter? Vous devez spécifier l’instance " instance " vous vous connectez à.

En supposant que vous souhaitiez vous connecter à l'instance SERVER, votre chaîne de connexion devrait alors ressembler à ceci (en supposant que le nom de l'instance par défaut):

Source de données = YOURSERVER \ MSSQLSERVER ; Catalogue initial = db; ID utilisateur = sa; Mot de passe = xxxxx;

Ou pour SQL Express, la chaîne de connexion ressemble à ceci: Source de données = YOURSERVER \ sqlexpress ; Catalogue initial = db; ID utilisateur = sa; Mot de passe = xxxxx;

Pouvez-vous vous connecter au serveur SQL via Management Studio à partir d’un autre ordinateur? Cela peut vous aider à préciser s'il s'agit de la configuration SQL Server ou de la configuration de votre chaîne de connexion.

Revérifiez la configuration de la surface d'exposition et assurez-vous que les connexions TCP / IP sont autorisées.

Cela pourrait être beaucoup de choses. La première chose que je voudrais vérifier est de vous assurer que vous pouvez vous connecter au serveur à l’aide de SQL Server Management Studio. Deuxièmement, vérifiez votre chaîne de connexion pour vous assurer qu'elle est correcte. La configuration de la surface ne doit pas s'appliquer aux connexions locales.

Essayez de réinstaller le dernier MDAC sur le serveur. J'ai déjà eu un problème similaire et cela l'a résolu.

[ http://www.microsoft.com/downloads/details.aspx?familyid=6c050fe3-c795-4b7d-b037-185d0506396c&displaylang=en][1]

D'après l'erreur, le code tente de se connecter à l'aide de canaux nommés, plutôt que TCPIP. Vous devrez peut-être indiquer spécifiquement dans votre chaîne de connexion que le fournisseur SQL doit se connecter à l'aide de tcpip, afin que votre chaîne de connexion ressemble à celle ci-dessous.

Utilisation de l'authentification intégrée (Windows):

Sécurité intégrée = SSPI; Source de données = SERVERNAME ; Catalogue initial = DATABASENAME ; Bibliothèque de réseau = DBMSSOCN ;

Utilisation de l'authentification SQL:

UID = NOM D'UTILISATEUR ; PWD = MOT DE PASSE ; Source de données = SERVERNAME ; Catalogue initial = DATABASENAME ; Bibliothèque de réseau = DBMSSOCN ;

J'ai déjà vu quelque chose de semblable à cela, où, pour une raison quelconque, "tubes nommés". est utilisé par défaut comme couche de transport / connexion, d’autant plus que l’application Web et le serveur SQL s'exécutent sur le même ordinateur. J'utilise généralement toujours tcpip en tant que transport ou bibliothèque réseau.

Une autre technique de dépannage consiste à utiliser un UDL (ou un fichier de liaison de données) pour dépanner la connexion. Cela vous permet de changer de fournisseur de connexion (ODBC, OLEDB, etc.) et de définir d’autres options de connexion.

  1. Sur le bureau de la machine, effectuez un clic droit et choisissez nouveau - > document texte.
  2. Renommez le fichier * .txt en TestConnect.udl (le nom n'a pas d'importance. L'extension .udl est nécessaire). Vous devriez voir l’icône changer d’une icône de fichier texte à une icône qui montre un ordinateur au-dessus d’une grille de données, ou quelque chose du genre (c’est-à-dire que Windows devrait avoir une icône pour cela.).
  3. Double-cliquez maintenant sur le fichier pour afficher le message "Propriétés du lien de données". l’applet apparaît.
  4. Cliquez sur l'onglet Fournisseur pour afficher une liste des différents fournisseurs de connexion. Je commencerais simplement par choisir "Fournisseur Microsoft OLE DB pour SQL Server". Nous pouvons utiliser ceci pour confirmer que OLE DB peut se connecter ou non.
  5. Cliquez sur suivant et entrez le nom du serveur ou l'adresse IP. Sélectionnez la sécurité intégrée à Windows NT. (Vous pouvez toujours revenir et le modifier pour utiliser une connexion SQL.) À ce stade, vous pouvez cliquer sur "Test de connexion". Si la connexion aboutit, sélectionnez un nom de base de données dans la liste déroulante.
  6. Enfin, si la connexion échoue, sélectionnez le bouton "Tous". onglet, puis recherchez " Network Library " et éditez sa valeur en la définissant sur "DBMSSOCN".
  7. Retournez à l'onglet de connexion et cliquez sur " tester la connexion " encore.
  8. Répétez les étapes 4 et 5 cette fois-ci avec l'option "SQL Native Client". sélectionné.

J'espère que cela vous aidera.

À l’invite:

osql -E -S

... recevez-vous un > invite?

Avez-vous essayé de spécifier le nom de l'instance dans la chaîne de connexion? Apparemment, SQL Server Express, en particulier, a du mal à avoir le nom de l'instance.

J'ai également commencé à me familiariser avec le gestionnaire de configuration SQL Server. Alors, avez-vous cliqué sur " Configuration réseau SQL Server 2005 " puis examinez "Protocoles pour NomInstance "? Et vous avez activé TCP / IP et Named Pipes?

Avez-vous également consulté la "Configuration du client natif SQL"? - > "Protocoles clients", et vous voyez que TCP / IP et les tubes nommés y sont également activés?

À l'aide de l'outil de configuration de la surface d'exposition SQL Server 2005, cliquez sur le lien "Configuration de la surface d'exposition pour les services et les connexions", puis sous "Moteur de base de données". - > " Connexions distantes " qu'est-ce qui est sélectionné? Comme il semble que vous tentiez de vous connecter à l'aide de tubes nommés, vous devez vous assurer que les "Connexions locales et distantes" et "en utilisant à la fois TCP / IP et les canaux nommés" est sélectionné.

Comme vous le savez probablement, une fois les modifications apportées, vous devez arrêter et redémarrer l'instance du serveur SQL via Management Studio (vous n'avez pas besoin de redémarrer la machine entière, bien que le redémarrage de la machine entière vous y conduira).

Et mon dernier conseil. Éloignez-vous un peu de ce sujet et oubliez-le quelques minutes. Lorsque vous replongez, vous pouvez trouver quelque chose que vous avez oublié ou négligé auparavant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top