views:

55

answers:

3

So I'm trying to make a simple C# console app that simply queries a database - nothing more.

However, I keep getting this 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)

Now, I've tried EVERYTHING! I've edited all my settings(added firewall exception, enabled TCP/IP, just about any solution you can find with a google search, I did). When I try to make a connection using SQL Management Studio using the same credentials that are in my connection string, everything works PERFECTLY. BUt for some reason, nothing works from Visual Studio.

Here is my Connection String:

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

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


        }
    }

Here is my stack trace:

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

I created the DataContext using SqlMetal, if that matters.

Also, I am using .Net 2008 and SQL 2008.

Does anyone have any ideas on what to do?

+1  A: 

I don't think "ID" is right. I know there are a number of aliases for these things in connection strings, but I always use "User ID"

Have a look here

Cade Roux
Yeah, I didnt even notice that! Thanks! +1
James
+1  A: 

It's probably worth just testing if the following works:

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

To me it looks like your connection string is probably not right - there's no user provided. I use the following connection string: "Data Source=ServerNameHere;Initial Catalog=DBNameHere;User ID=XXXX;Password=XXXX"

Matt Fellows
Wow, I replaced my reference to the connection string with the actual string, now it works!! Thanks!!! Do you know what this would happen? Also, I do need to use User ID, not just ID in the string
James
+1  A: 

You said you enabled TCP/IP, but did you disable Named Pipes? I have run into this before and disabling Named Pipes using Sql Server Configuration Manager resolved it for me.

You can also specify the protocol in the connection string, so you may also want to try that.

adrift
Yeah, I didnt even think of doing that. I was enabled already, though. Voted since this is still a useful tip!
James