2013-09-04 3 views
0

Мы установили Sonar 3.6.2 на машину Windows Server 2008 R2 Enterprise x64 и успешно начали ее в качестве службы Windows, используя встроенную базу данных H2. Наши проблемы начались при попытке переключить базу данных на экземпляр Microsoft SQL Server 2008.Проблемы с запуском службы сонара с MSSQL

Мы используем драйвер поставляется 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 

Подключение к одной и той же базе данных через DbVisualizer с тем же пользователем AUSonardsa, я могу видеть, что таблица «active_rule_changes» есть , и я могу сделать простой оператор sql 'select id from active_rule_changes', который возвращает пустую таблицу с одним столбцом id.

Google ищет похожие проблемы (т. Е. Недостающие столбцы в таблицах во время инициализации 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 

Даже когда у нас есть дБ переместить таблицы в ПСЭ схему вручную, сонар до сих пор не в состоянии видеть active_rule_changes, независимо от того, есть ли у меня свойство sonar.jdbc.schema.

Мы даже попытались сбросить всю базу данных гидролокатора, воссоздать новую и установить свойство схемы в «dbo» и снова запустить гидролокатор. В этом случае он идет вперед и воссоздает все таблицы, переходит к инициализации Hibernate и снова жалуется на то, что не найдет таблицу active_rule_changes. В этом случае, несмотря на то, что свойство schema было установлено на «dbo», таблицы по-прежнему создаются в рамках схемы пользователя AUSonardsa.

Может кто-нибудь, пожалуйста, помогите нам решить, что вызывает эти проблемы?

ответ

0

Закомментируйте это свойство, оно должно работать

#sonar.jdbc.schema:       sonar 
0

Вы должны установить схему пользователя по умолчанию эхолота к ПСЭ в базе данных.

Выполнить запрос как ниже в базе:

USE yourDatabase; 
ALTER USER yourUser WITH DEFAULT_SCHEMA = dbo; 

Затем удалить все таблицы в базе данных и перезапустить службу сонара на сервере. Это должно воссоздать все таблицы как dbo.<table name>.

Я понял, что ваша проблема возникла довольно давно. Недавно мы столкнулись с одной и той же проблемой и решили ее таким образом. Надеюсь, это поможет другим людям решить эту проблему в будущем.