2015-11-05 158 views
4

自從Sonarqube 5.2發佈以來,不再支持jTDS JDBC驅動程序。我們使用這個驅動程序連接到我們的SQLServer實例,但是我們必須切換到Microsoft SQLServer驅動程序。我們在Ubuntu上運行Sonarqube,並使用Active Directory帳戶連接到SQLServer數據庫。由於我們在Ubuntu上運行,因此我們無法使用集成安全性,因此必須在Sonarqube的JDBC配置中提供憑據。這將導致以下屬性:Sonarqube 5.2 SQLServer連接

sonar.jdbc.url=jdbc:sqlserver://sqlserverhost.my.domain.com:1433;databaseName=sonar;selectMethod=cursor 
sonar.jdbc.username=someuser 
sonar.jdbc.password=somepassword 

這導致SQLServer的一個「登錄失敗」消息「找不到登錄匹配提供的名稱。」

我想接下來的事情是與包含域用戶名進行連接,從而導致這些屬性:

sonar.jdbc.url=jdbc:sqlserver://sqlserverhost.my.domain.com:1433;databaseName=sonar;selectMethod=cursor 
sonar.jdbc.username=DOMAIN\\someuser 
sonar.jdbc.password=somepassword 

然而,這也導致了「登錄失敗」,在SQLServer的,這裏的消息是「嘗試使用SQL Server身份驗證使用NT帳戶名稱「。

我錯過了什麼?

UPDATE:
的Sonarqube日誌可以在這裏找到:http://pastebin.com/AGB9bTQG
我能想到的一件事是從JTDS連接網址不同:包含 的JTDS連接的URL「域= my.domain.com」 ,Microsoft SQLServer驅動程序似乎不支持。因此我嘗試了SQLServer拒絕的DOMAIN \ someuser設置。

+0

在以前版本的SQ(同時使用JTDS),是您使用作爲當前值相同的用戶名和密碼?換句話說,你只更新了「sonar.jdbc.url」屬性還是更改了其他內容? –

+0

是的,我們一直在使用相同的憑證一段時間,不僅改變了sonar.jdbc.url和sonar.jdbc.driver ofcourse – nieuwtje

+0

您不必指定「sonar.jdbc.driver」,什麼樣的價值也你定了嗎? –

回答

1

該驅動程序與jtds驅動程序完全不同。爲了使用它,您需要指定authenticationScheme = JavaKerberos參數(請參閱https://msdn.microsoft.com/en-us/library/gg558122(v=sql.110).aspxhttp://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx) 這裏的問題是您的Linux機器很可能不在同一個域中,因此您需要配置你的Linux機器上也有Kerberos。你最好的選擇是混合模式。

0

連接字符串格式已更改。沒有更多的:1443或selectMethod

sonar.jdbc.url = JDBC:SQLSERVER://sqlserverhost.my.domain.com;的databaseName =聲納

+0

也不起作用。問題是沒有達到SQLServer實例的方式。 SQLServer只是說它不能識別登錄 – nieuwtje

0

連接字符串設置需要在格式:

sonar.jbc.url = jdbc:sqlserver:// {server}:{port#}; databaseName = {db name}

eg

sonar.jbc.url =的jdbc:SQLSERVER://本地主機:36549;的databaseName =聲納

入住SQL Server配置管理器是TCP/IP協議已啓用並找到端口號爲SQL實例你想連接到。請注意,連接字符串中的數據庫名稱區分大小寫,並且必須與SSMS中顯示的內容匹配。

SQL Server TCP/IP Port Settings

回覆:Windows驗證到SQL Server - 你需要可以使用SQL Server身份驗證的用戶,或註釋掉sonar.jdbc.username和sonar.jdbc.password使得SonarQube使得下的連接運行SonarQube服務的用戶的憑證;我不認爲它支持模仿。

+1

實際上這是問題所在。 Sonarqube在Linux主機上運行,​​不使用Active Directory用戶帳戶,但SQLServer期望AD用戶進行連接。不幸的是,jdbc:sqlserver驅動程序不支持域配置,因此無法使用AD用戶帳戶連接到SQLServer實例。 – nieuwtje

+0

您能夠在SQL實例更改爲混合模式身份驗證,這樣就可以使用SQL身份驗證,而不是贏驗證(https://msdn.microsoft.com/en-gb/library/ms188670.aspx)? – Scottie

+1

我認爲這應該可行,但由於安全性,我們不會激活SQL身份驗證。所以,這是對這個問題的回答,但不是我正在尋找的那個。 – nieuwtje

-1

我們的解決方案是有權限的數據庫,並使用創建SQL Server帳戶,而不是使用AD/Windows帳戶。