3

我正在尝试在本地将 TeamCity 9 设置到本地 SQL Server 实例并收到以下错误。

与主机 localhost、命名实例 (localdb)\v11.0 的连接失败。错误:“java.net.SocketTimeoutException:接收超时”。验证服务器和实例名称,并检查没有防火墙阻止 UDP 流量到端口 1434。对于 SQL Server 2005 或更高版本,验证 SQL Server Browser 服务是否正在主机上运行。

SQL 异常:与主机 localhost、命名实例 (localdb)\v11.0 的连接失败。错误:“java.net.SocketTimeoutException:接收超时”。验证服务器和实例名称,并检查没有防火墙阻止 UDP 流量到端口 1434。对于 SQL Server 2005 或更高版本,验证 SQL Server Browser 服务是否正在主机上运行。

我已经通过 SSMS 测试了连接,并且我提供的 TC Web 设置的凭据是相同的。登录名有权访问该表。

使用 sqljdbc41.jar

它必须是简单的。

谢谢!

4

1 回答 1

0

很难知道您的环境可能存在什么问题,但我可以告诉您什么对我有用。关键项目是使用 JTDS JDBC 驱动程序而不是 Microsoft JDBC 驱动程序。

从http://jtds.sourceforge.net/下载最新的驱动程序

将下载的 zip 文件解压到%TEAMCITY_DATA_PATH%/config文件夹中

如果您使用 NTLM(即 Windows)身份验证连接到数据库,请为database.properties文件指定以下内容:

# Database: Microsoft SQL server (via jtds driver)   
connectionUrl=jdbc:jtds:sqlserver://localhost:1433/TeamCity
#connectionProperties.user=
#connectionProperties.password=

注意:这需要 TeamCity Windows 服务在作为数据库所有者的帐户的凭据下运行。此外,ntlmauth.dll文件也需要从JTDS zip 文件\x86\SSO文件夹复制到TeamCityHome\bin文件夹。

如果您使用 SQL 身份验证连接到数据库,请为 database.properties 文件指定以下内容:

# Database: Microsoft SQL server (via jtds driver)   
connectionUrl=jdbc:jtds:sqlserver://localhost:1433/TeamCity
connectionProperties.user=<SQL Login Name>
connectionProperties.password=<SQL Login Password>

因为 JTDS 驱动程序没有要使用的默认端口,所以您必须在为connectionUrl提供的值中指定一个端口。

如果您使用命名实例,您可以通过以下方式指定实例名称:

例如,如果实例名称是sqlexpress,则将实例属性添加到连接 URL 中,如下所示:

connectionUrl=jdbc:jtds:sqlserver://localhost:1433/TeamCity;instance=sqlexpress

或者,在 database.properties 文件中指定相应的属性:

connectionProperties.instance=sqlexpress

另见:http ://confluence.jetbrains.com/display/TCD9/Setting+up+an+External+Database

于 2015-05-27T17:27:20.263 回答