0

我正在尝试创建的此应用程序,其“实例/副本”将安装在客户端的多台 PC 上,并且能够从同一客户端的另一台 PC 访问同一数据库,该客户端的 SQL 服务器一直通过相同的服务器运行网络(即:它们具有相同的路由器和服务器的静态 IP 等)。

我有两种方法可以做到这一点:

  1. 通过同步使应用程序使用同一个数据库。
  2. 让多个 localdbs 共享数据库服务器的更改。

按照第一种方式,

我尝试设置连接字符串,如:

SqlConnection con = new SqlConnection("Data Source =[serverPcIP,Port];Integrated Security=True;Connect Timeout=30");

SqlConnection con = new SqlConnection("SERVER=[serverPcIP]; Port=[portno];Integrated Security=True;Connect Timeout=30");

在服务器 - 安全设置中:我已允许“ SQL Server 和 Windows 身份验证模式

在此处输入图像描述

在 Sql Server 配置管理器 > SQL Server 网络配置 > SQLEXPRESS 的协议 => TCP/IP = 已启用;在 IP 地址 -> IP1 -> TCP 端口 = 1433(我在连接字符串中使用的端口)下

在此处输入图像描述

在高级防火墙设置中:

已启用端口 1433 的传入和传出规则。

我得到的例外:

附加信息:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:0 - 等待操作超时。)

在此处输入图像描述

有人可以告诉我我缺少什么配置(连接字符串或 SQL 服务器本身)吗?

4

3 回答 3

1

您的连接字符串缺少实例名称,例如data source=<hostname or ip>\SQLEXPRESS。如果您的数据库在默认端口 1433 上进行侦听,则无需将其与连接字符串一起传递

如果您设置 SQL Server,则可以在默认 SQL Server 实例或命名实例之间进行选择。对于 SQL Express,默认安装名称为SQLEXPRESS的命名实例。如果您不使用默认实例并安装命名实例,则必须将其与连接字符串一起传递。

默认 SQL Server 实例只是具有众所周知的名称MSSQLSERVER的命名实例。因此,如果您将数据库实例安装为默认实例,您可以使用<host>[,port]<host>\MSSQLSERVER[,port]进行连接

于 2019-11-10T12:05:18.470 回答
1

根据您的屏幕截图,在 IP1 下,IP 地址处于活动状态但未启用。

另外,以 169.xxx 开头的 IP 地址通常意味着您已将此网卡设置为使用 DHCP,但该网卡无法从 DHCP 服务器获得 IP 地址。

你介意尝试使用静态IP地址吗?

于 2019-11-10T12:55:37.773 回答
0

考虑以下步骤:

  1. 由于您使用配置管理器提到了端口号,因此需要重新启动服务。如果不这样做,请重新启动服务。
  2. 似乎您可以通过 SSMS 连接,一旦服务重新启动,通过 SSMS -> Managemnt -> SQL Server Logs 验证 SQL 错误日志,您必须找到如下消息:
Server is listening on [ 'any' <ipv4> 1433].

更多详细信息,请按照以下步骤操作。还有这个..

于 2019-11-10T14:06:05.230 回答