I have a baffling connection problem from my C# console app to a sql 
server express database. 
The console application opens the sql database using the following 
code:- 
 vDataSource = "server = " + vgSqlServer + "; " + 
 "database = " + vgSqlServerDb + ";" + 
 "uid = XXX; pwd = XXX; "; 
 //create the connection 
 vSqlConnection = new SqlConnection(vDataSource); 
 try 
 { 
 vSqlConnection.Open(); 
 } 
 catch (Exception vSEx)
 {
 //connection failed
 Console.WriteLine("Failed");
 Console.Write("Connection Failed.\n\nError Number: " +
 "\n\n" + vSEx.Message,
 "Database Connection Failed");
 }
The exception message is:
Request for the permission of type 
'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089' failed. 
I have placed the application on a network drive ( just copying it not 
using publisher) and from my PC the application works fine. However 
when I try to run the application from any other machine on the same 
network the connection fails with an . On looking at this 
message the problem appear to be because the sqlclient code cannot get permission to the database. 
Both machines are using the same exe and have similar set-ups. 
Other Windows applications written in C# and accessing the same database 
work perfectly on both machines. 
I have tried connection using both SQl Server Login id's and windows 
authentication with no effect 
If I publish the application to the network it appears to work perfectly!! As the application is to be called by other apps I would really like to just call the exe not the full published version
My machine has both SqlServer express manager and VS so my question 
is - does anybody know of a reason why a console application will not 
work on a PC where a windows application works correctly? 
Sorry this is so long but I have tried to include all the details - 
please ask if you need any further info. 
Thanks you for your time.... 
DC 
The Wine Society 
 
Starting your application you are running in a CAS policy problem, whereas the execution of certain libraries is NOT allowed from network drives (therefore it works when starting them locally)
See this here for more information:
http://www.devx.com/vb2themax/Article/19886
BTW: You should try to use the SQLConenctionBuilder class instead of putting your string manually together. (it included in the System.Data.SqlClient namespace)
Jens K. Suessmeyer
http://www.sqlserver2005.de
No comments:
Post a Comment