我要创建共享数据库C#Windows窗体应用程序吗?

时间:2019-11-10 11:28:38

标签: c# sql-server sql-server-2012-express database-connectivity sql-server-config-manager

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

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

  1. 通过同步使应用程序使用同一数据库。
  2. 要有多个localdb,然后它们可以将更改共享给数据库服务器。

通过第一种方法,

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

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身份验证模式

enter image description here

  

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

enter image description here

在高级防火墙设置中:

  

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

我得到的例外:

  

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

enter image description here

有人可以告诉我我缺少什么配置(在连接字符串中还是在SQL Server本身中)?

3 个答案:

答案 0 :(得分:1)

您的连接字符串缺少实例名称,例如数据源= <主机名或ip> \ SQLEXPRESS 。如果您的数据库在默认端口1433上侦听,则无需使用连接字符串将其传递

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

默认的SQL Server实例只是一个名称为 MSSQLSERVER 的命名实例。因此,如果您将数据库实例安装为默认实例,则可以使用 [,port] \ MSSQLSERVER [,port]

连接

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

请考虑以下步骤:

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

更多详细信息,follow these steps。另外,this..