• Spring Boot 篇四: Spring Data JPA使用SQL Server


    本篇介绍篇一至篇三中用到的JPA链接SQL Server的具体情况以及实战过程中可能遇到的问题。

    SQL Server Express的安装或直接Docker

    具体的下载和安装教程,请参阅微软SQL Server官网

    SQL Server Express是免费的,并且配套的SQL Server Management Studio也是可以用的。
    Download SQL Server

    呃,当然,使用Docker来运行SQL Server是另外一条路径。具体请参阅Docker Hub文档

    SQL Server JDBC Driver

    Java环境中使用SQL Server,需要安装SQL Server JDBC Driver。

    微软将整个JDBC Driver的项目直接开源了:Github Repo

    在其下载页面,可以选择对应的JRE版本,不同的JRE版本会有不同的package。或者在Maven项目中直接加入下列依赖(这里依赖于JRE 11)。

    <dependency>
        <groupId>com.microsoft.sqlservergroupId>
        <artifactId>mssql-jdbcartifactId>
        <version>10.2.1.jre11version>
        <scope>runtimescope>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    TCP/IP 链接

    SQL Server的JDBC Driver需要TCP/IP。

    基于Trouble Shooting,TCP/IP必须配置。

    The Microsoft JDBC Driver for SQL Server requires that TCP/IP be installed and running to communicate with your SQL Server database. You can use the SQL Server Configuration Manager to verify which network library protocols are installed.

    打开TCP/IP,需要SQL Server Configuration Manager

    而基于文档,新的SQL Server Configuration Manager并没有额外的程序,而是提供了一系列的MSC文件。

    • SQL Server 2019: %sysdir%\SysWOW64\SQLServerManager15.msc
    • SQL Server 2017: %sysdir%\SysWOW64\SQLServerManager14.msc
    • SQL Server 2016: %sysdir%\\SysWOW64\SQLServerManager13.msc
    • 低版本略

    打开MSC文件,即可进行相应的配置。

    端口

    另外一个经常碰到的问题是:

    A network-related or instance-specific error occurred while establishing a connection to SQL Server

    这里需要查看端口的设置是不是正确。SQL Server默认使用端口1433。如下图设置,开发环境可以简单粗暴的全部设置为1433(生产环境另说)。

    IP

    Integrated Security

    SQL Server的Logon可以基于Windows是认证。这时不需要输入用户名和密码。这个在开发环境还是相当好用的,不需要额外配置开发环境的用户名和密码,更不需要将这些信息存储下来(如app.properties等等)。因为这些信息上传git的时候很麻烦。

    然而,直接设置Integrated Security并不能正常工作。根本原因是JDK的路径下找不到mssql-jdbc-auth-xxx.dll(xxx是版本号)。

    如果SQL Server Driver是Maven下安装的,那么上述DLL并不存在。换言之,上述DLL并不属于JAR的一部分。打开Maven的Repository目录并没有DLL:

    .m2\repository\com\microsoft\sqlserver\mssql-jdbc\10.2.1.jre11

    这时,只能去官方去下载Link

    然后复制上述DLL到%JAVA_HOME%\bin下。

    SSL

    随着网络认证的日趋严格,SSL 验证也被设置为标准了。

    下述错误就可能遇到了:

    The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption

    行之有效的方法是修改connection string:

    spring.data.url=jdbc:sqlserver://localhost;database=classicmodels;integratedSecurity=true;encrypt=true;trustServerCertificate=true;
    
    • 1

    总结

    有了以上这些配置和安装,SQL Server Express(以及别的版本)应该都能正确使用了。

    另外常见的两个问题是:

    jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
    
    • 1

    具体也可以参考上面的实例。

  • 相关阅读:
    ZephyrOS--添加自定义STM32开发板
    Pod控制器详解-Deployment(Deploy)
    Godot 4.0 文件系统特性的总结
    Oracle中的循环
    WIN10 NPM的安装
    输入一批数,找中位数
    Hive Metastore源码新增Thrift API方法
    java积累
    ubuntu中/etc/rc.local和/etc/init.d/rc.local的区别是什么
    6、Linux:一起玩转vi/vim编辑命令
  • 原文地址:https://blog.csdn.net/alvachien/article/details/127459265