2010-10-01 4 views
6

Donc j'essaye de faire une simple application console C# qui interroge simplement une base de données - rien de plus.Comment corriger l'erreur "Provider Pipes Provider, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server"

Cependant, je continue à obtenir cette erreur:

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: 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: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Maintenant, je l'ai tout essayé! J'ai modifié tous mes paramètres (exception de pare-feu ajouté, TCP/IP activé, à peu près n'importe quelle solution que vous pouvez trouver avec une recherche google, je l'ai fait). Lorsque j'essaie d'établir une connexion à l'aide de SQL Management Studio en utilisant les mêmes informations d'identification que dans ma chaîne de connexion, tout fonctionne PARFAITEMENT. BUt pour une raison quelconque, rien ne fonctionne à partir de Visual Studio.

Voici ma chaîne de connexion:

<add name="Invoicing" 
      connectionString="Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw" 
      providerName="System.Data.SqlClient" /> 

Voici l'application:

class Program 
{ 
    public static void Main(string[] args) { 

     Invoicing db = new Invoicing("Invoicing"); 

     var q = from sin Invoice 
       where s.Date == 201007 
       select s; 

     foreach(var sin q) 
      Console.WriteLine("{0}, {1}", s.CreateDate, 
           s.EndDate); 


     } 
    } 

Voici ma trace de la pile:

at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) 
    at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    at System.Data.SqlClient.SqlConnection.Open() 
    at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) 
    at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() 
    at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() 
    at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.GetQueryText(Expression query) 
    at System.Data.Linq.DataQuery`1.ToString() 

J'ai créé le DataContext en utilisant SqlMetal, si ce questions.

Aussi, je suis en utilisant .Net 2008 et SQL 2008.

Est-ce que quelqu'un a des idées sur ce qu'il faut faire?

Répondre

3

Il est probablement utile de simplement tester si les travaux suivants:

SqlConnection con = new SqlConnection("Data Source=server;Initial Catalog=Invoicing;Persist Security Info=True;ID=id;Password=pw"); 

Pour moi, il semble que votre chaîne de connexion ne soit probablement pas correcte - il n'y a pas d'utilisateur fourni. -je utiliser la chaîne de connexion suivante: "Source de données = ServerNameHere; Initial Catalog = DBNameHere; ID utilisateur = XXXX; Mot de passe = XXXX"

+0

Wow, j'ai remplacé ma référence à la chaîne de connexion par la chaîne actuelle, maintenant ça marche !! Merci!!! Savez-vous ce que cela va arriver? En outre, j'ai besoin d'utiliser l'ID utilisateur, pas seulement ID dans la chaîne – James

2

Je ne pense pas que "ID" est correct. Je sais qu'il ya un certain nombre d'alias pour ces choses dans les chaînes de connexion, mais je l'utilise toujours « ID utilisateur »

Jetez un oeil here

+0

Oui, je n'ai même pas remarqué ça! Merci! +1 – James

3

Vous avez dit que vous avez activé TCP/IP, mais avez-vous désactiver les canaux nommés? J'ai couru dans ceci avant et la désactivation des canaux nommés utilisant Sql Server Configuration Manager l'a résolu pour moi. Vous pouvez également specify the protocol dans la chaîne de connexion, vous pouvez également essayer cela.

+0

Ouais, je n'ai même pas pensé à le faire. J'étais déjà activé, cependant. Voté puisque c'est toujours un conseil utile! – James

Questions connexes