2015-11-05 155 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帐户。