2008-11-20 8 views
2

Un de mes clients m'a dit que le programme que j'ai fait pour eux ne se connecte pas à un serveur SQL nommé instance, j'ai un serveur SQL standard sans instance nommée donc je me demande comment je peux le tester. Une chaîne de connexion d'instance nommée ressemble à celle ci-dessous, la barre oblique inverse pourrait-elle être en cas d'échec de mon code?C# Connexion à un serveur SQL avec une instance nommée?

Pilote = {SQL natif client}; Serveur = monNomServeur \ nomInstance; Base de données = myDataBase;

Mon code est le suivant:

sqlServer=s.Substring(keyword.Length,s.Length-keyword.Length); 
FormODBC formODBC=new FormODBC(this); 
formODBC.SetSqlServer(sqlServer,dbUsername,dbPassword,database,table); 
formODBC.ReadData(); 

Comment dois-je gérer la barre oblique inverse que je soupçonne que cela peut être le problème?

Merci

Répondre

0

Scott, Au risque de lapalissade, avez-vous essayé la mise en place d'une instance nommée dans votre propre environnement de développement? Je ne connais pas vraiment la réponse à votre question, mais je n'ai jamais personnellement rencontré une solution où tester le scénario qui échoue directement n'a pas aidé. Au minimum, vous devriez être en mesure d'obtenir de meilleures informations de débogage sur ce qui échoue précisément. Bonne chance pour que cela soit résolu.

Cordialement, Chris

+0

S'il est sur une seule machine et n'a pas de licence pour exécuter une instance nommée, alors? – flesh

+0

@Chris, je pense qu'il aurait pu le comprendre lui-même. – badbadboy

+0

@flesh, il peut installer gratuitement SQL Server Express en tant qu'instance nommée sur son système. Le monde entier peut utiliser SQL Server Express gratuitement. Il s'agit du même moteur SQL Server qu'un serveur sous licence payant. Il ne prend en charge qu'une quantité de données inférieure (moins de 10 Go de données totales). – StarPilot

3

Nous avons des serveurs SQL avec les instances nommées. Exemples: myservername \ sql2005. Backslash est très bien, dans le nom de serveur de chaîne de connexion sera "myservername \ sql2005", fonctionne à 100% bien. Vous pouvez avoir une "instance régulière" sur le même serveur, sera "monservername"

PS juste unité tester votre fonction faisant la chaîne de connexion renvoie "myservername \ sql2005".

0

Il existe également le cas occasionnel de l'édition SQL Express où le nom est MonNomServeur \ SQLEXPRESS. Cela peut trébucher certaines personnes parce qu'elles ne penseraient pas à spécifier le serveur de cette façon.

0

Vous pouvez extraire votre chaîne de connexion dans un fichier de configuration (notez que ce n'est pas forcément sécurisé - cela dépend de la configuration de leur serveur de sécurité SQL et du compte de votre application) - votre client peut simplement ajouter chaîne de connexion appropriée pour leur serveur à votre configuration d'applications lors du déploiement.

Notes:

  • Vous pouvez créer une chaîne de connexion en renommant un fichier txt dans un fichier .udl et en cours d'exécution à travers jusqu'à ce que vous pouvez vous connecter à votre/leur serveur.
  • Votre instance unamed peut effectivement être accessible par son nom - le nom de la machine sur laquelle le serveur SQL est installé
3

Aussi, rappelez-vous que la barre oblique inverse est un caractère d'échappement dans les chaînes C#.Si votre nom d'instance est contenue dans une variable de chaîne, assurez-vous faire soit:

string server = "myServer\\myInstance"; 

ou

string server = @"myServer\myInstance"; 
1

La réponse est de vous assurer que votre chaîne de connexion est configurable, et le mettre à quelque chose comme:

source de données = localhost \ msexpress; database = nom_bdd; trusted_connection = true;

Questions connexes