Sonarqube 使用MSSQL启动声纳服务时出现的问题

Sonarqube 使用MSSQL启动声纳服务时出现的问题,sonarqube,Sonarqube,我们已经在Windows Server 2008 R2 Enterprise x64计算机上安装了Sonar 3.6.2,并使用嵌入式H2数据库将其作为Windows服务成功启动。我们的问题是在尝试将数据库切换到Microsoft SQL Server 2008实例时出现的 我们正在使用提供的jtds数据库驱动程序(v1.2.7),sonar.properties文件中未注释以下设置: #----- Microsoft SQLServer sonar.jdbc.username:

我们已经在Windows Server 2008 R2 Enterprise x64计算机上安装了Sonar 3.6.2,并使用嵌入式H2数据库将其作为Windows服务成功启动。我们的问题是在尝试将数据库切换到Microsoft SQL Server 2008实例时出现的

我们正在使用提供的jtds数据库驱动程序(v1.2.7),sonar.properties文件中未注释以下设置:

#----- Microsoft SQLServer 
sonar.jdbc.username:         <user>
sonar.jdbc.password:         *********** 
sonar.jdbc.url:              jdbc:jtds:sqlserver://<host>:<port>/sonar;domain=<domain>;useNTLMv2=true 
sonar.jdbc.driverClassName:  net.sourceforge.jtds.jdbc.Driver 

#----- Connection pool settings 
sonar.jdbc.maxActive:                      20 
sonar.jdbc.maxIdle:                        5 
sonar.jdbc.minIdle:                        2 
sonar.jdbc.maxWait:                        5000 
sonar.jdbc.minEvictableIdleTimeMillis:     600000 
sonar.jdbc.timeBetweenEvictionRunsMillis:  30000 

# Delay (in seconds) between processing of notification queue 
sonar.notifications.delay=60 
通过DBVisualizer和同一个AUSonardsa用户连接到同一个数据库,我可以看到表“active\u rule\u changes”在那里,我可以执行一个简单的sql语句“select id from active\u rule\u changes”,它返回一个带有单个id列的空表

谷歌搜索类似问题(即,在Hibernate初始化过程中缺少表中的列)都表明需要设置“sonar.jdbc.schema”值。但是,当我们设置此值(例如,设置为“dbo”)时,错误会略有变化:

2013-09-03 16:14:33.436:WARN:oejw.WebAppContext:Failed startup of context o.e.j.w.WebAppContext{/,file:/D:/devtools/Sonar/install/sonar-3.6.2/war/sonar-server/},file:/D:/devtools/Sonar/install/sonar-3.6.2/war/sonar-server 
org.hibernate.HibernateException: Missing table: active_rule_changes 
即使我们让dba手动将表移动到dbo模式,sonar仍然无法看到活动的_rule_changes表,无论是否设置了sonar.jdbc.schema属性

我们甚至尝试删除整个sonar数据库,重新创建一个新的数据库,并将schema属性设置为“dbo”,然后再次启动sonar。在本例中,它继续并重新创建所有表,进入Hibernate初始化,并再次抱怨找不到活动的\u rule\u changes表。在本例中,即使schema属性设置为“dbo”,表似乎仍然是在AUSonardsa用户的模式下创建的


有人能帮我们找出这些问题的原因吗

注释掉这个属性,它应该可以工作

#sonar.jdbc.schema:                         sonar

您需要在数据库中将sonar用户的默认模式设置为dbo

在数据库中运行如下查询:

USE yourDatabase;
ALTER USER yourUser WITH DEFAULT_SCHEMA = dbo;
然后删除数据库中的所有表,并在服务器上重新启动Sonar服务。这应该将所有表重新创建为
dbo.

我意识到你的问题发生在很久以前。我们最近遇到了同样的问题,并以这种方式解决了它。希望这能帮助其他人在将来解决这个问题

USE yourDatabase;
ALTER USER yourUser WITH DEFAULT_SCHEMA = dbo;