无法使用 IntelliJ/Rider 连接到 Microsoft SQL 服务器
Cannot connect to Microsoft SQL Server using IntelliJ/Rider
我在尝试为我的项目创建数据库时遇到以下错误:
[08S01] The TCP/IP connection to the host myhost, port 1433 has failed. Error: "Connection timed out: no further information. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall."
我已经尝试了所有可以在网上找到的解决方案。我将配置管理器中的端口更改为 1433,检查端口是否被防火墙阻止(不是),打开 SQL 服务器浏览,尝试使用 integratedSecurity = true
int 连接字符串但没有任何效果.
非常感谢任何帮助,谢谢
连接失败的最可能原因在关于该问题的第 3 条评论(由 Jura Gorohovsky 撰写)中进行了解释,并且实际上已在 OP 中进行了介绍。重复一下,详细信息是 here。
我的问题不同,是由于对 (localdb) 的混淆造成的。但在此之前,由于这是第一个实际答案,我将总结 Jura 引用的 Jetbrains post 中的步骤并解决最常见的问题。
SQL 服务器 (SQLEXPRESS) 需要启用 TCP/IP 以供 Rider 访问(可能还有其他 Jetbrains 产品,例如 Intellij,实际上任何使用 JDBC).需要执行以下步骤:
为 Rider 连接配置 SQL 服务器:
- 打开 SQL 相应版本的服务器配置管理器 -
cmd.exe /c start C:\Windows\SysWOW64\SQLServerManager14.msc
- SS2017、SQLServerManager13.msc - SS2016、SQLServerManager12.msc - SS2014。管理单元也可以在 System32 中找到。
- SQL 服务器服务 的详细面板应该显示 SQL 服务器(SQLEXPRESS).
- for SQL Server Network Configuration->Protocols for SQLEXPrESS 确保详细信息面板显示行 TCP/IP as Enabled.
- 在TCP/IP->属性->IP地址中(右击TCP/IP)。将 IPAll->TCP Dynamic Ports 设置为空白,将 IPAll->TCP Port 设置为 1433(或其他,如果您已更改 SS 配置)。
- 全部确认后重启SQL服务器(SQLEXPRESS)(右击SQL服务器服务->SQL 服务器 (SQLEXPrESS)) 并且您应该能够连接到 url
jdbc:jtds:sqlserver://localhost;instance=SQLEXPRESS
。您也可以使用 Tds 驱动程序。
我想 SQLEXPRESS 没有什么特别的,你创建的任何 SS 实例都可以用同样的方式打开。
请注意,如果您使用默认端口 1433 以外的端口,您可能会遇到问题。(我目前找不到文档。)如果您在 Rider 连接页面中指定端口号,那么实例将是忽略并连接到默认实例。您从 Rider 连接到的实例必须设置为默认值或端口号为 1433。
我的问题:
我很早就启用了 TCP/IP,但 运行 遇到了我只能连接到某种我一无所知的默认实例的问题。这是由于我未能充分区分 (localdb) 和 SQL 服务器本身,不确定 SQLEXPRESS 是单独的产品还是 SS 的实例,并且不熟悉 SS 配置快照-在。如果您没有安装 SQLEXPRESS 或其他 SS,这也会让粗心的人看到自己无法连接。
This InfoQ article总结了(localdb)的作用。它是 SQL 服务器的一种轻量级版本,但具有 none 的进程管理并且不使用相同的可发现性或 t运行 运动。它不会显示在 SS 配置管理单元中。
一旦你了解了 (localdb)/SQLLocalDB.exe 和其他风格的 SS 之间的区别,例如 SQLEXPRESS,来自 Rider 的连接就非常简单并且涵盖了 here.
Connectiong Rider 到 (localdb) - 上面提到的 post 的摘要:
- 运行
SQLLocalDB -s MSSQLLocalDB
- 在 Rider 右侧面板中执行 Database->+->Data Source->SQL Server.
- Select 驱动程序作为 SQL 服务器 (Tds)
- Select LocalDB 从 URL.
右侧的下拉列表
- Select MSSQLLocalDB(或其他可用实例)来自实例下拉列表。
- 可选择在文本框中指定一个数据库。
- 如果不使用传递身份验证,请提供凭据
- 执行测试连接等
t运行sport 是命名管道。另一端由 SQLLocalDB.exe 进程提供。如果 Rider 保持未连接状态超过几分钟,则 SQLLocalDB.exe 将退出,您将需要在下次使用 Rider 时重新运行它。这可以通过 solution.
来解决
使用 Rider 2018.2.3 测试。
我在尝试为我的项目创建数据库时遇到以下错误:
[08S01] The TCP/IP connection to the host myhost, port 1433 has failed. Error: "Connection timed out: no further information. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall."
我已经尝试了所有可以在网上找到的解决方案。我将配置管理器中的端口更改为 1433,检查端口是否被防火墙阻止(不是),打开 SQL 服务器浏览,尝试使用 integratedSecurity = true
int 连接字符串但没有任何效果.
非常感谢任何帮助,谢谢
连接失败的最可能原因在关于该问题的第 3 条评论(由 Jura Gorohovsky 撰写)中进行了解释,并且实际上已在 OP 中进行了介绍。重复一下,详细信息是 here。
我的问题不同,是由于对 (localdb) 的混淆造成的。但在此之前,由于这是第一个实际答案,我将总结 Jura 引用的 Jetbrains post 中的步骤并解决最常见的问题。
SQL 服务器 (SQLEXPRESS) 需要启用 TCP/IP 以供 Rider 访问(可能还有其他 Jetbrains 产品,例如 Intellij,实际上任何使用 JDBC).需要执行以下步骤:
为 Rider 连接配置 SQL 服务器:
- 打开 SQL 相应版本的服务器配置管理器 -
cmd.exe /c start C:\Windows\SysWOW64\SQLServerManager14.msc
- SS2017、SQLServerManager13.msc - SS2016、SQLServerManager12.msc - SS2014。管理单元也可以在 System32 中找到。 - SQL 服务器服务 的详细面板应该显示 SQL 服务器(SQLEXPRESS).
- for SQL Server Network Configuration->Protocols for SQLEXPrESS 确保详细信息面板显示行 TCP/IP as Enabled.
- 在TCP/IP->属性->IP地址中(右击TCP/IP)。将 IPAll->TCP Dynamic Ports 设置为空白,将 IPAll->TCP Port 设置为 1433(或其他,如果您已更改 SS 配置)。
- 全部确认后重启SQL服务器(SQLEXPRESS)(右击SQL服务器服务->SQL 服务器 (SQLEXPrESS)) 并且您应该能够连接到 url
jdbc:jtds:sqlserver://localhost;instance=SQLEXPRESS
。您也可以使用 Tds 驱动程序。
我想 SQLEXPRESS 没有什么特别的,你创建的任何 SS 实例都可以用同样的方式打开。
请注意,如果您使用默认端口 1433 以外的端口,您可能会遇到问题。(我目前找不到文档。)如果您在 Rider 连接页面中指定端口号,那么实例将是忽略并连接到默认实例。您从 Rider 连接到的实例必须设置为默认值或端口号为 1433。
我的问题: 我很早就启用了 TCP/IP,但 运行 遇到了我只能连接到某种我一无所知的默认实例的问题。这是由于我未能充分区分 (localdb) 和 SQL 服务器本身,不确定 SQLEXPRESS 是单独的产品还是 SS 的实例,并且不熟悉 SS 配置快照-在。如果您没有安装 SQLEXPRESS 或其他 SS,这也会让粗心的人看到自己无法连接。
This InfoQ article总结了(localdb)的作用。它是 SQL 服务器的一种轻量级版本,但具有 none 的进程管理并且不使用相同的可发现性或 t运行 运动。它不会显示在 SS 配置管理单元中。
一旦你了解了 (localdb)/SQLLocalDB.exe 和其他风格的 SS 之间的区别,例如 SQLEXPRESS,来自 Rider 的连接就非常简单并且涵盖了 here.
Connectiong Rider 到 (localdb) - 上面提到的 post 的摘要:
- 运行
SQLLocalDB -s MSSQLLocalDB
- 在 Rider 右侧面板中执行 Database->+->Data Source->SQL Server.
- Select 驱动程序作为 SQL 服务器 (Tds)
- Select LocalDB 从 URL. 右侧的下拉列表
- Select MSSQLLocalDB(或其他可用实例)来自实例下拉列表。
- 可选择在文本框中指定一个数据库。
- 如果不使用传递身份验证,请提供凭据
- 执行测试连接等
t运行sport 是命名管道。另一端由 SQLLocalDB.exe 进程提供。如果 Rider 保持未连接状态超过几分钟,则 SQLLocalDB.exe 将退出,您将需要在下次使用 Rider 时重新运行它。这可以通过 solution.
来解决使用 Rider 2018.2.3 测试。