mrp*_*121 7 sql-server jetbrains-ide intellij-idea rider
当我尝试为我的项目创建数据库时出现以下错误:
[08S01] 到主机 myhost 的 TCP/IP 连接失败,端口 1433。错误:“连接超时:无更多信息。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口接受 TCP/IP 连接。确保未阻止到端口的 TCP 连接通过防火墙。”
我已经尝试了我可以在网上找到的所有可能的解决方案。我将配置管理器中的端口更改为 1433,检查端口是否被防火墙阻止(不是),打开 SQL Server 浏览,尝试使用integratedSecurity = true
int 连接字符串,但没有任何效果。
将不胜感激任何帮助,谢谢
连接失败的最可能原因在关于该问题的第 3 条评论(由 Jura Gorohovsky 撰写)中进行了解释,并且实际上已在 OP 中进行了介绍。重复一遍,详细信息在这里。
我的问题是不同的,是由对 (localdb) 的混淆引起的。但在此之前,由于这是第一个实际答案,我将总结 Jura 引用的 Jetbrains 帖子中的步骤并解决最常见的问题。
SQL Server (SQLEXPRESS) 需要启用 TCP/IP 以供 Rider(可能还有其他 Jetbrains 产品,例如 Intellij,实际上任何使用 JDBC 的进程)访问。需要以下步骤:
为 Rider 连接配置 SQL Server:
cmd.exe /c start C:\Windows\SysWOW64\SQLServerManager14.msc
- SS2017、SQLServerManager13.msc - SS2016、SQLServerManager12.msc - SS2014。管理单元也可以在 System32 中找到。jdbc:jtds:sqlserver://localhost;instance=SQLEXPRESS
。您也可以使用 Tds 驱动程序。我认为 SQLEXPRESS 没有什么特别之处,您创建的任何 SS 实例都可以以相同的方式打开。
请注意,如果您使用默认 1433 以外的端口,您可能会遇到问题。(我目前找不到文档。)如果您在 Rider 连接页面中指定端口号,则实例将被忽略,连接将被为默认实例制作。您从 Rider 连接到的实例必须设置为默认值或端口号为 1433。
我的问题:我很早就启用了 TCP/IP,但遇到了我只能连接到某种我一无所知的默认实例的问题。这是由于我未能充分区分 (localdb) 和 SQL Server 正确,不确定 SQLEXPRESS 是单独的产品还是 SS 的实例,并且不熟悉 SS 配置管理单元。如果您碰巧没有安装 SQLEXPRESS 或其他 SS,那么这也会让粗心大意的人无法连接。
这篇 InfoQ 文章总结了 (localdb) 的作用。它是一种轻量级的 SQL 服务器,但没有进程管理,也没有使用相同的可发现性或传输。它不会显示在 SS 配置管理单元中。
一旦您了解了 (localdb)/SQLLocalDB.exe 与其他 SS 风格(如 SQLEXPRESS)之间的区别,来自 Rider 的连接就非常简单,此处将进行介绍。
Connectiong Rider to (localdb) - 上面提到的帖子摘要:
SQLLocalDB -s MSSQLLocalDB
传输是一个命名管道。另一端由 SQLLocalDB.exe 进程提供。如果 Rider 保持未连接状态超过几分钟,则 SQLLocalDB.exe 将退出,您下次使用 Rider 时需要重新运行它。这可以通过此解决方案解决。
使用 Rider 2018.2.3 测试。
归档时间: |
|
查看次数: |
2896 次 |
最近记录: |