我有一个C#.Net 3.5可执行文件,它在本地计算机上运行,并对运行SQL Server 2005的服务器进行数据库调用。我在本地计算机上使用名为“localserver”的数据源管理器添加了一个系统DSN “(将驱动程序设置为SQL Server)。当我创建DSN时,我可以成功测试与服务器的连接。
我已将localserver添加到我的可执行文件中的连接字符串中,并且收到错误“建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“
我连接的服务器允许远程连接。当我用服务器名称替换localserver时,它连接正常,但是这个程序将在多个服务器名称的位置,所以我需要使数据源动态。
有关为何发生这种情况的任何想法?
谢谢,
亚伦
修改
我也尝试使用“localserver,1433”作为我的数据源,但是我收到此错误: “建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(提供程序: TCP提供程序,错误:0 - 没有这样的主机。)“
修改
感谢您的回复。为了解决我的问题,我做了一个小方法来使用odbc连接来收集服务器名。
然后我可以将servername发送到SqlConnection。再次感谢您的意见。
答案 0 :(得分:1)
SqlClient(即SqlConnection)与ODBC完全无关。因此,在SqlClient连接字符串中使用ODBC数据源名称将使您无法快速完成。
您可以在app.config中配置服务器名称,并使用SqlConnectionStringBuilder构建连接字符串。在部署时,您可以适当地更改exe或用户的.config文件。
答案 1 :(得分: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
摘自上述帖子:
要连接到本地计算机, 为服务器指定“(本地)”。如果一个 未指定服务器名称,a 将尝试连接到 本地的默认实例 计算机。
我会重复一遍,SqlConnection与DSN无关,