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


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

SQL Server Express的安装或直接Docker

具体的下载和安装教程,请参阅;

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

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

SQL Server JDBC Driver

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

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

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

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>10.2.1.jre11</version>
    <scope>runtime</scope>
</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%SysWOW64SQLServerManager15.msc SQL Server 2017: %sysdir%SysWOW64SQLServerManager14.msc SQL Server 2016: %sysdir%/SysWOW64SQLServerManager13.msc 低版本略

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

端口

另外一个精彩碰到的问题是:

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

这里需要查看端口的设置是不是正确。SQL Server默认使用端口1433。如下图设置。

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 epositorycommicrosoftsqlservermssql-jdbc10.2.1.jre11

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

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

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]]

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

  • 数据类型。 基础数据类型的和高级数据类型的。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/291816.html

(0)
上一篇 2022年10月25日 20:41
下一篇 2022年10月25日 20:41

相关推荐

发表回复

登录后才能评论