2010-10-01 9 views
6

Also ich versuche, eine einfache C# -Konsolen-App, die einfach eine Datenbank abfragt - nichts mehr.So beheben Sie Fehler "Named Pipes Provider, Fehler: 40 - Konnte keine Verbindung zu SQL Server öffnen"

Aber ich erhalte immer diese Fehlermeldung:

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)

Nun, ich habe versucht, alles! Ich habe alle meine Einstellungen bearbeitet (Firewall-Ausnahme hinzugefügt, aktiviert TCP/IP, fast jede Lösung, die Sie mit einer Google-Suche finden können, tat ich). Wenn ich versuche, mithilfe von SQL Management Studio eine Verbindung herzustellen, die dieselben Anmeldeinformationen verwendet, die sich in meiner Verbindungszeichenfolge befinden, funktioniert alles PERFEKT. Aus irgendeinem Grund funktioniert nichts von Visual Studio.

Hier ist meine Connection String:

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

Hier App:

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); 


     } 
    } 

Hier mein Stack-Trace ist:

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() 

habe ich den Datacontext SqlMetal verwenden, wenn das Angelegenheiten.

Auch ich bin mit .NET 2008 und SQL 2008

Hat jemand irgendwelche Ideen, was zu tun?

Antwort

3

Es ist wahrscheinlich wert nur testen, ob die folgenden Werke:

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

Für mich sieht es aus wie Ihre Verbindungszeichenfolge ist wahrscheinlich nicht richtig - es gibt keinen Benutzer zur Verfügung gestellt. Ich verwende die folgende Verbindungszeichenfolge: "Data Source = ServerNameHere; Initial Catalog = DBNameHere; User ID = XXXX; Password = XXXX"

+0

Wow, ich habe meinen Verweis auf die Verbindungszeichenfolge durch die tatsächliche Zeichenfolge ersetzt, jetzt funktioniert es !! Vielen Dank!!! Weißt du, was das passieren würde? Auch muss ich Benutzer-ID, nicht nur ID in der Zeichenfolge – James

2

Ich glaube nicht, "ID" ist richtig. Ich weiß, dass es eine Reihe von Aliasnamen für diese Dinge in Verbindung Strings sind, aber ich benutze immer „User ID“

Werfen Sie einen Blick here

+0

Ja, das habe ich gar nicht bemerkt! Vielen Dank! +1 – James

3

Sie sagten, Sie TCP/IP aktiviert ist, aber haben Sie deaktivieren Named Pipes? Ich habe das schon einmal gesehen und die Deaktivierung von Named Pipes mit dem Sql Server Configuration Manager hat es für mich gelöst.

Sie können auch in der Verbindungszeichenfolge, also möchten Sie vielleicht auch versuchen, dass.

+0

Ja, ich habe nicht einmal daran gedacht, das zu tun. Ich war bereits aktiviert. Gewählt, da dies immer noch ein nützlicher Tipp ist! – James

Verwandte Themen