2010-10-01 14 views
6

Estoy tratando de crear una aplicación simple de la consola C# que simplemente consulte una base de datos, nada más.Cómo reparar el error "Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión con el servidor SQL"

Sin embargo, me siguen dando este error:

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)

todo ahora, lo he intentado! He editado todas mis configuraciones (excepción de firewall agregado, TCP/IP habilitado, casi cualquier solución que pueda encontrar con una búsqueda en Google, lo hice). Cuando trato de hacer una conexión usando SQL Management Studio usando las mismas credenciales que están en mi cadena de conexión, todo funciona PERFECTAMENTE. Por alguna razón, nada funciona desde Visual Studio.

Aquí es mi cadena de conexión:

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

Aquí es aplicación:

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


     } 
    } 

Aquí está mi seguimiento de la pila:

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

creé el DataContext usando SQLMetal, si eso asuntos.

Además, estoy usando .Net 2008 y SQL 2008.

¿Alguien tiene alguna idea de qué hacer?

Respuesta

3

Probablemente vale la pena simplemente probar si las siguientes obras:

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

Para mí, parece que la cadena de conexión probablemente no esté correcta; no hay ningún usuario provisto. utilizo la siguiente cadena de conexión: "Datos de origen = ServerNameHere; Initial Catalog = DBNameHere; User ID = XXXX; contraseña = XXXX"

+0

Wow, reemplacé mi referencia a la cadena de conexión con la cadena actual, ¡ahora funciona! ¡¡¡Gracias!!! ¿Sabes lo que pasaría? Además, necesito usar User ID, no solo ID en la cadena – James

2

No creo que "ID" sea correcto. Sé que hay un número de alias para estas cosas en las cadenas de conexión, pero siempre utilizar "ID de usuario"

Tener una mirada here

+0

Sí, ¡ni siquiera lo noté! ¡Gracias! +1 – James

3

Dijiste que habilitado el protocolo TCP/IP, pero no deshabilita canalizaciones con nombre? Me he encontrado con esto antes y deshabilitar las Canalizaciones con nombre usando el Administrador de configuración del servidor Sql. Lo resolví por mí.

También puede specify the protocol en la cadena de conexión, por lo que es posible que también desee probarlo.

+0

Sí, ni siquiera pensé en hacer eso. Sin embargo, ya estaba habilitado. ¡Votado porque este sigue siendo un consejo útil! – James

Cuestiones relacionadas