自Sonarqube 5.2发布以来,不再支持jTDS JDBC驱动程序。我们使用此驱动程序连接到我们的SQLServer实例,但我们必须切换到Microsoft SQLServer驱动程序。我们在Ubuntu上运行Sonarqube并使用Active Directory帐户连接到SQLServer数据库。因为我们在Ubuntu上运行,所以我们无法使用集成安全性,因此必须在Sonarqube的JDBC配置中提供凭据。这将导致以下属性:
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中的“登录失败”,此处的消息是“尝试将NT帐户名与SQL Server身份验证一起使用。”
我错过了什么?
更新:
可以在此处找到Sonarqube日志:http://pastebin.com/AGB9bTQG
我可以想到一个与jTDS连接url不同的东西:
jTDS连接URL包含“; domain = my.domain.com”,Microsoft SQLServer驱动程序似乎不支持。因此,我尝试了SQLServer拒绝的DOMAIN \ someuser设置。
答案 0 :(得分:1)
驱动程序与jtds驱动程序完全不同。要使用它,您需要指定authenticationScheme = JavaKerberos参数(请参阅https://msdn.microsoft.com/en-us/library/gg558122(v=sql.110).aspx和http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx) 这里的问题是您的Linux机器很可能不在同一个域中,因此您也需要在Linux机器上配置kerberos。你最好的选择是混合模式。
答案 1 :(得分:0)
连接字符串格式已更改。不再:1443或selectMethod
sonar.jdbc.url = JDBC:SQLSERVER://sqlserverhost.my.domain.com;的databaseName =声纳
答案 2 :(得分:0)
连接字符串设置必须采用以下格式:
sonar.jbc.url = jdbc:sqlserver:// {server}:{port#}; databaseName = {db name}
e.g。
sonar.jbc.url = JDBC:SQLSERVER://本地主机:36549;的databaseName =声纳
在SQL Server配置管理器中检查是否已启用TCP / IP协议,并查找要连接到的SQL实例的端口号。请注意,连接字符串中的数据库名称区分大小写,并且必须与SSMS中显示的内容相匹配。
Re:Windows Auth到SQL Server - 您需要使用SQL Server Auth用户,或者注释掉sonar.jdbc.username和sonar.jdbc.password,以便SonarQube在运行用户的凭据下建立连接SonarQube服务;我认为它不支持冒充。
答案 3 :(得分:-1)
我们的解决方案是创建一个具有数据库权限的SQL Server帐户,并使用该帐户而不是使用AD / Windows帐户。