sql-server – 如果我将程序部署到另一台机器,我的连接字符串不起作用

我有一个在本地工作的c#应用程序但是如果我在另一台机器上发布我的程序它就不会工作.我收到一条错误消息,指出无法找到服务器名称.

An unhandled exception of type ‘System.Data.SqlClient.SqlException’
occurred in ProductionOrderQuery.exe

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: SQL Network Interfaces, error: 26 – Error Locating
Server/Instance Specified)

两台计算机都位于同一企业域网络中.它可能与我如何指定我的服务器名称有关?我是否只需编写服务器名称或者是否需要完全限定的域名?

连接字符串是

Server=hostname\\SQLEXPRESS;Database=mydb;Trusted_Connection=True;

我正在使用SS auth和sa帐户.

我是否需要在SSMS上做任何事情才能使其发挥作用?

编辑:所以我已经按照如何通过IP地址连接指南,看看它是否是DNS搞砸了.我已经配置了命名管道和静态端口并更改了我的连接字符串.防火墙已禁用仍无法远程连接,一切正常.我确实设法让一台机器远程连接,就是这样,非常令人费解.

新连接字符串是Data Source =

< IP>,1433;网络库= DBMSSOCN;初始目录=脚步;用户ID = sa;密码=密码;连接超时= 0;

我可以从我正在尝试连接的机器ping服务器,nslookup报告正确的主机名.我可以从客户端到服务器运行跟踪.在服务器上禁用防火墙以进行测试.

编辑2:当有人登录到不是我的远程机器时,他们无法连接.因此,尽管我专门使用SA帐户,但似乎仍然存在某种窗口身份验证.当我登录时,我可以连接好.

解决方案:这里有一个疯狂的追逐,但事实证明我曾使用数据源向导来填充设计视图中使用不同连接字符串的组合框.

你不能从VS中删除非常烦人的数据源.花了一段时间才把它们移走.

我不明白为什么如果数据源没有绑定到表单上的任何内容,应用程序仍然坚持在运行时连接到它们.

一旦我设法删除数据源,而不是使用SA帐户(我在我的数据库上创建了一个具有读写权限的新帐户),该应用程序就可以运行.

我不明白为什么我不能将sa帐户添加到我的数据库(当我这样做时收到错误)但我可以添加一个自定义帐户.

总而言之,最后有2个问题,我使用SA帐户和链接到组合框的其中一个数据源中的隐藏连接字符串这一事实

谢谢.

最佳答案 请检查应该启动的第二台计算机上的“SQL Server(MSSQLSERVER)”服务.

您可以在运行窗口中键入services.msc并找到“SQL Server(MSSQLSERVER)”服务名称,并确保它已启动.enter image description here

点赞