5

J'ai installé SQL Server Express 2008 sur l'un de mes ordinateurs et j'essaie d'établir une connexion à distance ... lorsque j'utilise MS SQL Server Management Studio, je peux me connecter à base de données sans aucun problème du tout (avec les mêmes informations d'identification), mais lorsque je tente de créer une chaîne de connexion dans mon application C# je reçois une exception:C# 2008 Chaîne de connexion SQL Server Express

a lié à un réseau ou une instance spécifique erreur est survenue lors de l'établissement 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 distantes.

Voici ce que ma chaîne de connexion ressemble à (l'information privée est modifiée):

"Data Source="MACHINENAME\\SQLEXPRESS";User ID="Admin";Password="the_password";Initial Catalog="MyDatabase";Integrated Security=True;Connect Timeout=120"); 

Comme je l'ai dit, je peux vous connecter en utilisant le Management Studio avec les mêmes paramètres: même utilisateur , mot de passe et nom de source de données, mais il échoue lorsque j'essaie d'ouvrir une connexion avec la chaîne de connexion ci-dessus.

Note:

  1. J'ai permis à la connectivité à distance sur le serveur, le pare-feu désactivé, la connexion TCP/IP est activé sur le serveur, le navigateur activé SQL.

  2. La chaîne de connexion fonctionne correctement lorsque je suis sur la même machine. J'ai recherché l'option de sécurité intégrée et je l'ai mise à false juste pour m'assurer qu'elle n'essaie pas d'utiliser la connexion Windows, mais elle échoue toujours.

  3. La base de données est configurée pour autoriser à la fois la connexion à Windows et la connexion à la base de données.

  4. En changeant l'option de sécurité intégrée à SSPI, True, et enfin False, tous les 3 m'ont donné la même erreur que ci-dessus.

Quelqu'un peut-il me dire si je fais quelque chose de mal?

UPDATE, voici mon code exact (cette fois que le mot de passe est supprimé, et je l'ai ajouté une photo de studio de gestion en cours d'exécution sur la même machine):

string _connectionString = 
      //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Connect Timeout=120", // Same problem 
      //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Integrated Security=False;Connect Timeout=120", // Same problem 
      string.Format("Data Source=%s;User ID=%s;Password=%s;Initial Catalog=%s;Integrated Security=False;Connect Timeout=120", // Same problem 
      "GANTCHEVI\\SQLEXPRESS", 
      "FinchAdmin", 
      "the_password", 
      "Finch"); 

Connected Via Management Studio: See Picture http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

I figured it out:

Lorsque vous utilisez e e "Data Source =" étiquette, il faut utiliser le "User ID", si vous utilisez l'ID utilisateur, il ne semble pas que cela fonctionne!

string _connectionString = "Data Source=GANTCHEVI\\SQLEXPRESS;Initial Catalog=Finch;Integrated Security=False;User Id=FinchAdmin;Password=the_password;Connect Timeout=0";" 

Répondre

11

De MSDN:

sécurité intégrée - Si false, ID utilisateur et mot de passe sont spécifiés dans la connexion. Si la valeur est true, les informations d'identification du compte Windows actuel sont utilisées pour l'authentification.

+0

+1 Explication de Nice. – Praveen

0

Et si vous utilisez Integrated Security = SSPI?

Si vous ne souhaitez pas utiliser une connexion Windows, je crois que l'autre réponse concernant la suppression du paramètre de sécurité intégrée est correcte. Supprimer Integrated Security = True de votre chaîne de connexion et (facultatif) ajouter Persist Security Info = True;

1

Ok - Je devine que vous avez essayé toutes ces http://blogs.msdn.com/sqlexpress/archive/2005/05/05/415084.aspx

Avez-vous essayé sqlping sur MACHINENAME \ SQLEXPRESS

Pouvez-vous ping MACHINENAME

Enfin, je suis sûr que vous ne besoin 1 slash ie MACHINENAME \ SQLEXPRESS

+0

Merci de répondre :) Oui, j'ai déjà activé tous ces paramètres et je peux me connecter à la base de données en utilisant le Studio de gestion, je suis actuellement connecté avec Management Studio dès maintenant. Je peux cingler MACHINENAME et il renvoie 192.168.0.9 (l'adresse de la machine connectée à mon routeur). Il s'agit de deux barres obliques à l'intérieur d'une chaîne car la barre oblique est considérée comme un caractère spécial. – Kiril

+0

Oui tout à fait correct sur deux barres obliques, pensé qu'il était dans la config. Doh! –

1

Il pourrait être votre instance SQL n'est pas cobfigured pour accepter les connexions TCP entrantes, vous pouvez vérifier cela sous Sta rt-> SQL Server 2008 -> Outils de congestion -> Gestionnaire de configuration SQL Server. Sur le côté gauche de cet outil, vous verrez la configuration réseau, développez-la pour voir quels protocoles sont activés.

+0

Il est configuré pour accepter les connexions TCP. J'ai Management Studio sur le même ordinateur que mon application C# et je suis connecté à la base de données avec les mêmes paramètres. – Kiril

+1

Je voulais avoir Integrated Security sur mon serveur db local afin que mes informations d'identification de compte Windows actuelles puissent être utilisées. Cette réponse m'a amené à ouvrir les outils de configuration. Lorsque j'ai démarré l'Agent SQL Server, je pouvais me connecter de mon application C# à une base de données. Merci Colin. – DavidHyogo

2

essayer cette

string sqlcon=("Data Source="your pc name\\SQLEXPRESS"; 
UserID=sa; 
Password=****; 
Initial Catalog="+MyDatabase+"; 
IntegratedSecurity=True;"); 
Questions connexes