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