如果我将程序部署到其他计算机

时间:2018-03-15 16:29:05

标签: sql-server connection-string

我有一个在本地工作的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搞砸了。我已经配置了命名管道和静态端口并更改了我的连接字符串。防火墙已禁用仍无法远程连接,一切正常。我确实设法让一台机器远程连接,就是这样,非常令人费解。

新连接字符串是Data Source =

<ip>,1433; Network Library = DBMSSOCN;Initial Catalog = footfall; User ID = sa; Password=password;connection timeout=0;

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

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

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

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

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

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

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

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

感谢。

7 个答案:

答案 0 :(得分:1)

请检查&#34; SQL Server(MSSQLSERVER)&#34;它应该在第二台机器上开始服务。

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

答案 1 :(得分:0)

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

按照图片

enter image description here

谢谢

答案 2 :(得分:0)

让我们拿你的服务器名称:

DESKTOP\SQLEXPRESS

然后你可以像这样在连接字符串中避免你的机器名。

Data Source=.\SQLEXPRESS

谢谢!

答案 3 :(得分:0)

你可以试试这个......

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

enter image description here

确认sql server允许远程连接:

enter image description here

确认sa用户在您的数据库用户列表中和/或与您的数据库dbo角色相关联。为了以防万一,还要尝试检查sa是否为该数据库的db_owner。

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

data source = server \ SQLEXPRESS; initial catalog = db; integrated security = false; user id = user; password = pwd; Persist Security Info = True;

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

另一件事是,在您的问题中,您正在向SQLEXPRESS实例添加2个斜杠,而实际上它只是一个。

答案 4 :(得分:0)

我有时会遇到同样的问题。这对我有用:

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

  

“SQL Server配置管理器”

     

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

     

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

     

在“IP地址”选项卡上,转到最后一个条目“IP All”

     

输入“TCP端口”1433。

     

现在重启“SQL Server .Name”。使用“services.msc”(winKey + r)

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

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

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

相关问题