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

本文目录

  • SQL Server Express的安装或直接Docker
  • SQL Server JDBC Driver
  • TCP/IP 链接
    • 端口
  • Integrated Security
  • SSL
  • 总结

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

SQL Server Express的安装或直接Docker

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

SQL Server Express是免费的,并且配套的SQL Server Management Studio也是可以用的。
Spring Boot 篇四: Spring Data JPA使用SQL Server_第1张图片

呃,当然,使用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>

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。如下图设置。

Spring Boot 篇四: Spring Data JPA使用SQL Server_第2张图片

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;

总结

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

另外常见的两个问题是:

  • Connection String。
    官方文档给定的语法如下:
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

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

  • 数据类型。
    基础数据类型的官方文档和高级数据类型的官方文档。

你可能感兴趣的:(Java,Spring,Boot,spring,boot,数据库,microsoft)