Sql server 我的连接字符串没有';如果我将程序部署到另一台机器上,则无法工作

Sql server 我的连接字符串没有';如果我将程序部署到另一台机器上,则无法工作,sql-server,connection-string,Sql Server,Connection String,我有一个在本地工作的c#应用程序,但如果我在另一台机器上发布我的程序,它将无法工作。我收到一个错误,说找不到服务器名 “System.Data.SqlClient.SqlException”类型的未处理异常 在ProductionOrderQuery.exe中发生 其他信息:与网络相关或特定于实例的错误 建立与SQL Server的连接时发生。服务器已关闭 找不到或无法访问。验证实例名称是否正确 正确,并且SQL Server已配置为允许远程连接。 (提供程序:SQL网络接口,错误:26-定位错

我有一个在本地工作的c#应用程序,但如果我在另一台机器上发布我的程序,它将无法工作。我收到一个错误,说找不到服务器名

“System.Data.SqlClient.SqlException”类型的未处理异常 在ProductionOrderQuery.exe中发生

其他信息:与网络相关或特定于实例的错误 建立与SQL Server的连接时发生。服务器已关闭 找不到或无法访问。验证实例名称是否正确 正确,并且SQL Server已配置为允许远程连接。 (提供程序:SQL网络接口,错误:26-定位错误) 服务器/实例(已指定)

这两台计算机位于同一个公司域网络上。这可能与我如何指定服务器名称有关?我必须只写服务器名还是需要完全限定的域名

连接字符串为

Server=hostname\\SQLEXPRESS;Database=mydb;Trusted_Connection=True;
我正在将SS auth与sa帐户一起使用

我需要在SSMS上做些什么才能让它工作吗

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

新连接字符串是数据源=

,1433;网络库=DBMSSOCN;初始目录=英尺;用户ID=sa;密码=密码;连接超时=0

我可以从我试图连接的机器ping服务器,并且nslookup报告正确的主机名。我可以很好地运行从客户端到服务器的跟踪。已在服务器上禁用防火墙以进行测试

编辑2:当有人登录到不是我的远程机器时,他们无法连接。因此,尽管我特别使用SA帐户,但这里似乎仍然存在某种windows身份验证。当我登录时,我可以正常连接

解决方案:这里有点白费力气,但事实证明我使用了数据源向导来填充设计视图中使用不同连接字符串的组合框

你也不能从VS中删除数据源,这很烦人。我花了一段时间才把它们取下来

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

一旦我成功地删除了数据源,并且没有使用SA帐户(我在数据库上创建了一个具有读写权限的新帐户),应用程序就可以工作了

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

总之,最后有两个问题,一个是我在使用SA帐户,另一个是链接到组合框的数据源中的隐藏连接字符串


谢谢。

请转到SQL Server Management Studio并单击“连接”按钮以连接数据库引擎。在此之后,复制服务器名称并将其传递到连接字符串中服务器名称的位置

跟随图像


谢谢

让我们用您的服务器名称:

DESKTOP\SQLEXPRESS
然后您可以像这样避免在连接字符串中使用您的机器名

Data Source=.\SQLEXPRESS
谢谢大家!

你可以试试这个

确认服务器身份验证处于混合模式,如下图所示

确认sql server允许远程连接:

确认sa用户在数据库用户列表中和/或与数据库dbo角色关联。以防万一,还要检查sa是否是该数据库的db_所有者

我将继续使用默认连接字符串:

数据源=服务器\SQLEXPRESS;初始目录=db;综合安全=假;用户id=用户;密码=pwdpersistensecurityinfo=True

在使用用户/密码进行身份验证时,持久化安全性是一个重要部分


另一件事是,在您的问题中,您向SQLEXPRESS实例添加了两个斜杠,而实际上它只是一个。这就是我的工作原理:

检查SQL Server配置管理器中的设置

“SQL Server配置管理器”

单击“SQL Server网络配置”并单击 “名称的协议”

右键单击“TCP/IP”(应启用)。点击属性

在“IP地址”选项卡上,转到最后一项“IP全部”

输入“TCP端口”1433

现在使用“services.msc”(winKey+r)重新启动“sqlserver.Name.”


我想这是防火墙的问题。禁用第二台计算机上安装的任何防病毒或防火墙,并检查您是否能够连接。

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


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

这里有点白费力气,但事实证明我使用了数据源向导来填充设计视图中使用不同连接字符串的组合框

你也不能从VS中删除数据源,这很烦人。我花了一段时间才把它们取下来

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


一旦我成功删除了数据源,并且没有使用SA帐户(我在数据库上创建了一个具有读写权限的新帐户),应用程序就会工作。

如果数据库中没有启用远程连接,则需要在数据库中启用远程连接。谢谢,是的,它们已启用。您是否尝试过进行用户名/通过身份验证?远程身份验证有很多方法。您是否禁用了要连接的引擎上的防火墙?当你成功的时候