MS SQL JDBC 与 MS SQL Server 2012 的连接

MS SQL JDBC connection with MS SQL Server 2012

我过去常常使用 MYSQL 来满足我的数据库需求。我切换到 MSSQL 因为有人要我在上面开发应用程序。我之前用的是MS SQL Server 2008,后来升级到MS SQL Server 2012。在JDBC中,我用的是:

   String connectionUrl="jdbc:sqlserver://"+sname+";DatabaseName="+dbname;

其中 sname 是我的 'machinename/instancename'(正确),dbname 是不言自明的。我还尝试了其他各种带有端口号的字符串。尝试了所有这些:

1) 在 Sql Management Studio (SMS) 中右键单击 Sql 服务器 -> 连接 -> 允许远程连接。

2) 在 Sql Management Studio (SMS) 中右键单击 Sql 服务器 -> 安全 -> 允许远程连接 -> 将授权模式设置为 Win 和 Sql 授权模式(即混合模式)

3) 甚至禁用防火墙。

4) Sql 服务器配置管理器 -> 网络配置 -> 协议 -> 启用共享内存,命名管道,TCP/IP。

5) SQL 浏览器服务已启用。

6) Here 它说'服务器正在侦听 ['any' 1433]' 应该列在我的 SQL 服务器日志中,但它不是。即使在端口中重复启用 1433 之后。

7) 我还有:

看到了很多像 these 这样的链接,但没有帮助。 尝试了 this 中的所有答案。在回答中有人提到了 telnet 命令。 运行

  telnet 127.0.0.1 1433

我得到 'Could not open connection to the host, on port 1433: Connection failed'。我已经尝试通过控制面板中的防火墙高级设置打开端口。我已经尝试 'advfirewall netsh' 启用端口。

我主要使用它在 NetBeans 上开发 Web 应用程序。一个简单的数据库连接问题就花了一整天。好像微软让我们很难使用 MS SQL Server.

我得到的错误是:

   se:com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host [host name], port 1433 has failed. Error: "Connection refused: connect. 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."

任何人都可以帮助指出我遗漏的东西吗?这是从 2012 文件夹打开的我的配置管理器 window 的视图(我的程序中有两个 2008 和 2012 文件夹,idk 为什么因为更新后不应该删除 2008 版本?):

最终对我有用的东西(在各种博客上搜索了几个小时之后):

  1. 使用默认实例安装了 MS SQL 2012。这删除了 ​​2008 版本。
  2. 重做以上所有内容。另外,为1433端口添加了出站规则。经过多次搜索,找到了关于出站规则的部分。大家都只说入站规则。
  3. 重新启动 配置管理器中的服务(SQL 浏览器,SQL 服务器)。在它开始之前不会发生任何变化。
  4. 使用此连接字符串(用户="sa" 和服务器名作为默认实例名称。还使用了 sa 的密码):

    url = "jdbc:sqlserver://" + servername + ":1433;user=" + user + ";password=" + dbPass + "; namedPipe=true;DatabaseName=" + dbName;
    

注意:每次从开始-> 所有程序-> Microsoft SQL Server 2012 -> 配置工具-> SQL 服务器配置管理器- 每次登录计算机时,我都会重新启动服务器- >SQL 服务-> 用我的默认实例名称右键单击 SQL 服务器并启动它。然后,运行 telnet 命令:

telnet 127.0.0.1 1433

显示空白屏幕。这意味着端口 1433 现在正在工作。