将SQL SERVER Express 2017设置为允许远程连接。

3

我的服务器遭遇了一次严重的崩溃,导致需要重新安装Windows Server 2016...

我有一个桌面应用程序可以连接到SQL Server数据库,但现在我已经将数据库设置在服务器上,我不记得如何使其对外部来源(应用程序)可用。

你能帮忙吗?


2
嗯,有一件事情经常被忽视了,那就是打开标准防火墙。SQL Server本身并不会这样做 ;) - TomTom
2
并且你还需要启用TCP/IP访问,使用SQL Server配置管理器,我猜测。我认为默认情况下它是禁用的。 - Bart Hofland
你能本地连接吗?当你尝试远程连接时,你遇到了什么错误? - Nick.Mc
我收到的消息是 System.Data.SqlClient.SqlException: '在建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。找不到服务器或无法访问。请验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。(提供程序: Named Pipes Provider, 错误: 40 - 无法打开到 SQL Server 的连接)' - Andie
2个回答

12

按照以下步骤启用 SQL Server 的远程连接:

  1. 打开 SQL Server Management Studio。
  2. 右键单击服务器名称,然后选择“属性”。
  3. 选择“连接选项”。
  4. 选中“允许此服务器上的远程连接”复选框。
  5. 选择“确定”。

启用 TCP/IP 并打开 1433 端口

  1. 打开 SQL Server 配置管理器。
  2. 选择 SQLServer 网络配置->MSSQLServer 的协议。
  3. 在右侧窗格中,确保已启用 TCP/IP。
  4. 右键单击 TCP/IP,并选择“属性”。
  5. 在“TCP/IP 属性”对话框中,选择“IP 地址”选项卡,然后向下滚动到“IPAII”。
  6. 确保 TCP 端口为 1433。

    为数据库引擎访问配置 Windows 防火墙

  7. 打开 Windows 管理工具

  8. 从管理工具中选择“带高级安全性的 Windows 防火墙”选项
  9. 在“带高级安全性的 Windows 防火墙”对话框中,单击“入站规则”选项,然后选择“新建规则”命令
  10. 在“新入站规则向导”中选择“端口”选项,然后单击“下一步”
  11. 在“协议和端口”窗口中指定规则适用的协议和端口。选择 TCP 选项,在“特定本地端口”文本框中输入 1433 端口,然后单击“下一步”
  12. 在“操作”窗口中选择“允许连接”,以指定满足规则中指定条件的连接所采取的操作。

  13. 在“配置文件”窗口中指定规则适用的配置文件,然后单击“下一步”。

  14. 在最后一个窗口中指定创建的规则名称,然后单击“完成”按钮。

配置 SQL Server 命名实例的远程访问

  1. 打开 Windows 管理工具。
  2. 从管理工具中选择“带高级安全性的 Windows 防火墙”选项。
  3. 在“带高级安全性的 Windows 防火墙”对话框中,单击“入站规则”选项,然后选择“新建规则”命令。
  4. 在“新入站规则向导”中选择“端口”选项,然后单击“下一步”。
  5. 在“协议和端口”窗口中指定规则适用的协议和端口。选择 TCP 选项,在“特定本地端口”文本框中输入 1433 端口,然后单击“下一步”。
  6. 在“操作”窗口中选择“允许连接”,以指定满足规则中指定条件的连接所采取的操作。
  7. 在“配置文件”窗口中指定规则适用的配置文件,然后单击“下一步”。
  8. 在最后一个窗口中指定创建的规则名称,然后单击“完成”按钮。

不错。不过,你的第三和第四个类别是相同的。我猜想你需要在远程源上运行兼容版本的SQL Server,可能还需要一个固定的IP地址?后端服务器不应该知道客户端的IP地址吗?如果我迷失了,请原谅。我的意思是,我们怎么知道谁可以进入防火墙呢?而且,源/客户端难道不应该知道后端的IP地址才能登录吗?那么我们如何为客户端创建用户和角色类别呢? - MSIS

1

如果您使用命名实例(或SQL Express),您还需要打开UDP端口1434。这是我使用的命令行,而不是上述UI过程。

打开TCP(SQL Server和SQL Browser):

NETSH advFirewall firewall add rule name="Allow: Inbound: TCP: SQL Server Services" dir=in action=allow protocol=TCP localport=1433,1434,2382

打开UDP(SQL Server Dynamic for Named和SQLEXPRESS):
NETSH advFirewall firewall add rule name="Allow: Inbound: TCP: SQL Server Services Dyn" dir=in action=allow protocol=UDP localport=1434

我正在使用SQL Express,我发现这些额外的端口是不必要的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接