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
最初にソナーを開始すると、必要なすべてのテーブルが作成されていることがわかります。ただし、Hibernate を初期化する段階になると、次のエラーが表示されます。
2013.09.03 14:24:58 INFO o.s.j.s.AbstractDatabaseConnector Initializing Hibernate
2013.09.03 14:25:00 ERROR o.s.s.p.Platform Missing column: id in sonar.GLOBALTEST\AUSonardsa.active_rule_changes
org.hibernate.HibernateException: Missing column: id in sonar.GLOBALTEST\AUSonardsa.active_rule_changes
同じ AUSonardsa ユーザーで DBVisualizer を介して同じデータベースに接続すると、テーブル 'active_rule_changes' がそこにあることがわかり、単純な SQL ステートメント 'select id from active_rule_changes' を実行して、単一の id 列を持つ空のテーブルを返すことができます。
同様の問題 (つまり、Hibernate の初期化中にテーブル内の列が欠落している) に対する Google 検索はすべて、「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.jdbc.schema プロパティが設定されているかどうかに関係なく、sonar はまだ active_rule_changes テーブルを認識できません。
ソナー データベース全体を削除して、新しいデータベースを再作成し、スキーマ プロパティを「dbo」に設定して、ソナーを再度起動することさえ試みました。この場合、先に進み、すべてのテーブルを再作成し、Hibernate の初期化に進み、active_rule_changes テーブルが見つからないことについて再び文句を言います。この場合、スキーマ プロパティが「dbo」に設定されていても、テーブルは依然として AUSonardsa ユーザーのスキーマで作成されているように見えます。
誰かがこれらの問題の原因を突き止めるのを手伝ってくれませんか?