无法使用IntelliJ / Rider连接到Microsoft SQL Server

时间:2017-12-23 05:16:36

标签: sql-server intellij-idea jetbrains-ide rider

当我尝试为项目创建数据库时,我收到以下错误:

  

[08S01]与主机myhost,端口1433的TCP / IP连接失败。错误:"连接超时:无更多信息。验证连接属性。确保主机上正在运行SQL Server实例并接受端口上的TCP / IP连接。确保防火墙不阻止与端口的TCP连接。"

我已经尝试过我可以在网上找到的所有可能的解决方案。我将配置管理器中的端口更改为1433,检查端口是否被防火墙阻止(它不是),打开SQL Server浏览,尝试使用integratedSecurity = true int连接字符串并且没有任何工作

非常感谢任何帮助,谢谢

1 个答案:

答案 0 :(得分:1)

连接问题最可能的原因在有关该问题的第三条评论(由Jura Gorohovsky撰写)中进行了解释,并且实际上已在OP中进行了介绍。重复一遍,详细信息为here

我的问题与众不同,是由于对(localdb)感到困惑。但是在此之前,因为这是第一个实际答案,所以我将概述朱拉提到的Jetbrains帖子中的步骤,并解决最常见的问题。

SQL Server(SQLEXPRESS)要求启用Rider(可能还有其他Jetbrains产品,例如Intellij,实际上是使用JDBC的任何进程)的访问权限,才能启用TCP / IP。需要执行以下步骤:

为Rider连接配置SQL Server:

  1. 打开适用于相应版本的SQL Server配置管理器-cmd.exe /c start C:\Windows\SysWOW64\SQLServerManager14.msc-SS2017,SQLServerManager13.msc-SS2016,SQLServerManager12.msc-SS2014。在System32中也可以找到这些管理单元。
  2. SQL Server服务的详细信息面板应显示 SQL Server(SQLEXPRESS)
  3. 对于 SQL Server网络配置-> SQLEXPrESS协议,请确保详细信息面板将行 TCP / IP 显示为 Enabled 。 li>
  4. TCP / IP->属性-> IP地址中(右键单击 TCP / IP )。将 IPAll-> TCP动态端口设置为空白,并将 IPAll-> TCP端口设置为1433(如果更改了SS配置,则设置为其他)。
  5. 确认全部并重新启动SQL Server(SQLEXPRESS)(右键单击 SQL Server服务-> SQL Server(SQLEXPrESS)),您应该可以与网址jdbc:jtds:sqlserver://localhost;instance=SQLEXPRESS。您还可以使用Tds驱动程序。

我知道SQLEXPRESS没什么特别的,您创建的任何SS实例都可以用相同的方式打开。

请注意,如果您使用默认端口1433以外的端口,则可能会遇到问题。(我目前找不到文档。)如果您在Rider连接页面中指定端口号,则该实例将被忽略,并且将与默认实例建立连接。从Rider连接到的实例必须设置为默认实例或端口号为1433。

我的问题: 我很早就启用了TCP / IP,但遇到了一个问题,即我只能连接到某种我不了解的默认实例。这是由于我未能充分地区分(localdb)和SQL Server是否正确而引起的,无法确定SQLEXPRESS是单独的产品还是SS的实例,并且不熟悉SS Configuration管理单元。如果您没有碰巧安装SQLEXPRESS或其他SS,这也将导致无法连接的情况出现,就像无法连接一样。

This InfoQ article总结了(localdb)的作用。它是SQL Server的一种轻量级版本,但没有进程管理员,也没有使用相同的可发现性或传输方式。它不会显示在“ SS配置”管理单元中。

一旦您了解了(localdb)/SQLLocalDB.exe与其他SS版本(例如SQLEXPRESS)之间的区别,来自Rider的连接就非常简单并且涵盖了here

到(localdb)的Connectiong Rider-上面提到的帖子摘要:

  1. 运行SQLLocalDB -s MSSQLLocalDB
  2. 在Rider右侧面板中执行 Database-> +-> Data Source-> SQL Server
  3. 选择驱动程序作为 SQL Server(Tds)
  4. 从URL右侧的下拉列表中选择 LocalDB
  5. 从“实例”下拉列表中选择 MSSQLLocalDB (或其他可用实例)。
  6. (可选)在文本框中指定数据库。
  7. 如果不使用通过身份验证则提供凭据
  8. 进行测试连接等。

传输是命名管道。另一端由SQLLocalDB.exe进程提供。如果Rider保持断开连接状态超过几分钟,则SQLLocalDB.exe将退出,您下次使用Rider时需要重新运行它。可以使用此solution解决此问题。

使用Rider 2018.2.3测试。