SonarQube 配置SQL Server 数据库遇到的问题

发布于:2025-04-06 ⋅ 阅读:(11) ⋅ 点赞:(0)

之前本机跑了一套SonarQube的社区版,默认使用的是H2数据库,那么我把它练到我机器上的SQL Server数据库了,期间遇到以下两个问题,并在配置过程中解决掉,特将这个过程记录下来。

一、JDBC连接SQL Server问题

1. 问题出现

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接:错误:(certificate_unknown) PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。 ClientConnectionId:f2442503-79f4-4bbf-b402-c63f310d2b1b

2. 问题分析
这是因为默认启用了encrypt属性,且trustServerCertificate服务器证书信任属性为false(即不信任服务器证书),这样就要自行指定证书了,然后又没有给指定,那当然不让连。

3. 解决办法
(1)信任服务器证书
也就是使用自签名证书:

sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar;encrypt=true;trustServerCertificate=true

(2)不加密(不建议)
一不做二不休,干脆不加密了:

sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar;encrypt=false

当然,这么干风险是存在的,当然用于本地测试学习,也无所谓了,生产环境确实不建议:
风险描述:当encrypt=false时,客户端不会强制要求加密。如果SQL Server未配置强制加密(例如服务器未启用“强制加密”选项),所有通信数据(包括敏感信息如用户名、密码、查询内容等)将以明文形式传输。
潜在后果:攻击者可通过网络抓包(如Wireshark)窃取数据,导致信息泄露或中间人攻击。

二、数据库排序规则问题

1. 问题出现

Caused by: org.sonar.api.utils.MessageException: Database collation must be case-sensitive and accent-sensitive. It is Chinese_PRC_CI_AS but should be Chinese_PRC_CS_AS.

2. 问题分析
SonarQube要求数据库排序规则case-sensitiveaccent-sensitive,按照要求修改数据库(或者在创建时注意)即可。

3. 解决办法

ALTER DATABASE sonar COLLATE Chinese_PRC_CS_AS

success