2009-07-24 97 views
0

我有一个C#.Net 3.5可执行文件,它运行在本地机器上,并对运行SQL Server 2005的服务器进行数据库调用。我已经使用数据源添加了一个系统DSN管理员在本地计算机上调用“localserver”(将驱动程序设置为SQL Server)。当我创建DSN时,我可以成功测试与服务器的连接。Sql Server 2005本地主机系统DSN不能正常工作

我已将localserver添加到我的可执行文件中的连接字符串中,并且出现错误“建立与SQL Server的连接时发生网络相关或实例特定错误。未找到服务器或无法访问服务器(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“

我正在连接的服务器确实允许远程连接。当我将localserver替换为服务器名称时,它连接正常,但该程序将位于具有多个服务器名称的多个位置,因此我需要使数据源变为动态。

任何想法为什么会发生这种情况?

谢谢

亚伦

编辑:

我使用 “的LocalServer,1433” 我的数据源也试过,但我得到这个错误: “网络与SQL Server建立连接时发生的相关或特定于实例的错误服务器未找到或无法访问确认实例名称正确并且SQL Server配置为允许远程连接(提供程序:TCP提供程序,错误:0 - 没有这样的主机是已知的。)“

编辑:

谢谢您的答复。为了解决我的问题,我做了一个小方法来使用odbc连接来收集服务器名称。

然后,我可以将servername发送到SqlConnection。再次感谢您的输入。

回答

1

SqlClient(即SqlConnection)与ODBC完全无关。因此,在SqlClient连接字符串中使用ODBC数据源名称将使您无处不在。

您可以在app.config中配置服务器名称,并使用SqlConnectionStringBuilder构建连接字符串。在部署时,您可以适当地更改exe或用户的.config文件。

0

正如Remus所说,DSN与SqlConnection无关。相反,使用此连接字符串:

http://www.connectionstrings.com/sql-server-2005#1

而且阅读:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

从上面的帖子摘录:

To connect to a local computer, specify "(local)" for the server. If a server name is not specified, a connection will be attempted to the default instance on the local computer.

我会重复的SqlConnection无关用DSN做,