2013-09-04 5 views
0

Windows Server 2008 R2 Enterprise x64 시스템에 Sonar 3.6.2를 설치하고 포함 된 H2 데이터베이스를 사용하여 Windows 서비스로 성공적으로 시작했습니다. Microsoft SQL Server 2008 인스턴스로 데이터베이스를 전환하려고 시도 할 때 문제가 발생했습니다. 우리는 sonar.properties 파일에 주석 다음과 같은 설정으로, 공급 jtds 라이브러리 데이터베이스 드라이버 (v1.2.7)를 사용하는MSSQL을 사용하여 sonar 서비스를 시작할 때의 문제

: 처음에 수중 음파 탐지기를 시작할 때

#----- 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 

, 우리는 그것을 창조하고 볼 수있는 모든 필요한 테이블. 최대 절전 모드로 초기화 단계까지 얻을 때, 우리는 다음과 같은 오류를 참조하십시오

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이'이 있음을 볼 수있다 , 그리고 단일 ID 열을 가진 빈 테이블을 반환하는 간단한 SQL 문 'select id from active_rule_changes'를 수행 할 수 있습니다.

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 

우리는 우리의 DBA가 수동으로 DBO 스키마에 테이블을 이동이 경우에도, 수중 음파 탐지기는 여전히 볼 수 없습니다 sonar.jdbc.schema 속성이 설정되었는지 여부에 관계없이 active_rule_changes 테이블

우리는 전체 소나 데이터베이스를 삭제하고 새로운 것을 재 작성하고 스키마 속성을 'dbo'로 설정하고 다시 수중 음파 탐지기를 시작하기까지했습니다. 이 경우, 모든 테이블을 다시 생성하고 Hibernate Initialization으로 돌아오고 active_rule_changes 테이블을 찾지 못한다고 다시 불평합니다. 이 경우 스키마 속성이 'dbo'로 설정되었지만 테이블은 여전히 ​​AUSonardsa 사용자의 스키마 아래에 생성 된 것처럼 보입니다.

누군가이 문제의 원인을 해결할 수 있도록 도와 줄 수 있습니까?

답변

0

주석으로이 속성을, 당신이 데이터베이스으로 dbo하기 위해 수중 음파 탐지기 사용자의 기본 스키마를 설정해야

#sonar.jdbc.schema:       sonar 
0

작동합니다.

을 실행하여 데이터베이스에 다음과 같은 질의 :

USE yourDatabase; 
ALTER USER yourUser WITH DEFAULT_SCHEMA = dbo; 

그런 다음 데이터베이스의 모든 테이블을 삭제하고 서버의 소나 서비스를 다시 시작합니다. 모든 테이블을 dbo.<table name>이되도록 다시 작성해야합니다.

저는 오래 전 귀하의 문제가 발생했다는 것을 깨달았습니다. 우리는 최근에 같은 문제를 겪어서 이런 식으로 해결했습니다. 다행히도 다른 사람들이 앞으로이 문제를 해결할 수 있기를 바랍니다.

관련 문제