在Windows Server 2012上安装TeamCity时出错“java.library.path中没有sqljdbc_auth”

时间:2015-07-27 08:34:06

标签: java windows teamcity windows-server-2012

我正在Windows 2012 Server上安装TeamCity。我正在数据库连接设置屏幕但是收到此错误。

  

“执行时出现SQL错误:从数据源获取连接:java.library.path中没有sqljdbc_auth”

我已将sqljdbc_auth.dll复制到C:\Windows\System32文件夹,并添加了指向此文件夹的系统环境变量java.library.path

7 个答案:

答案 0 :(得分:9)

除非您故意使用64位,否则即使您使用的是64位平台,Teamcity也会安装32位版本。因此,我将向您提供有关使用Windows身份验证和Teamcity SQL数据库设置的32位指令。对于64位设置,指令是相同的,只需将x86更改为x64

即可
  1. 在SQL Server中创建一个空数据库
  2. 确保在TeamCity服务上配置的Windows帐户可以访问数据库
  3. 将sqljdbc42.jar复制到<TeamCity_data_dir>\lib\jdbc\sqljdbc42.jar
  4. auth\x86\sqljdbc_auth.dll从Microsoft下载复制到<TeamCity_data_dir>\lib\sqljdbc_auth.dll
  5. 开放系统&gt;高级系统设置&gt;环境变量并添加系统变量TEAMCITY_SERVER_OPTS=-Djava.library.path=<TeamCity_data_dir>\lib
  6. 在所有对话框中单击“确定”,然后重新启动Teamcity服务。
  7. 现在,您可以使用Windows身份验证将Teamcity连接到SQL服务器,之后向导将创建数据库。

答案 1 :(得分:7)

http://www.mikeobrien.net/blog/teamcity-sqlserver-integrated-security

帮助了我。

我使用的是JDBC 4.1版本。

答案 2 :(得分:6)

我设法在数据库配置设置期间使用SQL Server身份验证而不是Windows身份验证来解决此问题。不确定为什么这应该修复与Java环境变量相关的错误,但我只能假设错误是由于它无法登录到数据库而产生的,并且由于某种原因引发了无关的错误。

这似乎是TeamCity抛出错误错误消息的错误。如果出现此错误,请尝试切换到SQL Server身份验证。

答案 3 :(得分:6)

如果您运行的是32位,则可以将sqljdbc_auth.dll的x86版本(从jdbc下载)复制到<TeamCityProgramDir>\bin

答案 4 :(得分:1)

您应该检查TeamCity服务器日志。我的(位于c:\TeamCity\logs\teamcity-server.log)提到以下内容:

  

[2019-03-20 07:54:56,045]信息-jetbrains.buildServer.STARTUP-在E:\ BuildServer \ lib \ jdbc \ native \ windows-i386或E下找不到本地库sqljdbc_auth.dll: \ BuildServer \ lib \ jdbc \ native;将继续查找sun.boot.library.path和java.library.path。

sqljdbc_auth.dll库放入E:\BuildServer\lib\jdbc\native\windows-i386中并重新启动服务后,一切都很好。无需干预bin文件夹(在TC升级过程中将其重置)或无需定义环境变量。

答案 5 :(得分:0)

在我的情况下它没有用,因为之前的安装和版本TeamCity isntallation有一些文件。我卸载了TeamCity,删除了所有TeamCity文件夹并重新安装。然后它就像一个魅力。

答案 6 :(得分:0)

我今天遇到了TeamCity 10.x这个带有捆绑Java的问题,我想将现有的内部数据库迁移到SQL Server。

  1. 关注Setting up TeamCity with MS SQL Server,直到您需要设置JDBC驱动程序。
  2. 使用您使用SQL Server安装的相同Windows帐户登录TeamCity服务器。
  3. 使用当前版本,他们说下载6.0+驱动程序,但随后引用4.x版本。您希望版本位于下载\ Microsoft JDBC驱动程序6.2 for SQL Server \ sqljdbc_6.2 \ enu \ mssql-jdbc-6.2.2.jre8.jar ,并将其复制到 C: \ ProgramData \ JetBrains的\ TeamCity的\ lib中\ JDBC \ MSSQL-JDBC-6.2.2.jre8.jar 即可。
  4. 从同一个6.x驱动程序下载中,将下载\ Microsoft JDBC驱动程序6.2 for SQL Server \ sqljdbc_6.2 \ enu \ auth \ x86 \ sqljdbc_auth.dll 复制到 C:\ ProgramData \ JetBrains的\ TeamCity的\ lib中\ sqljdbc_auth.dll 即可。
  5. 添加名为TEAMCITY_SERVER_OPTS的新系统环境变量,其值为-Djava.library.path=C:\ProgramData\JetBrains\TeamCity\lib
  6. 为了使MaintainDB工具正常工作,添加另一个名为TEAMCITY_MAINTAINDB_OPTS的系统环境变量,其值相同(-Djava.library.path=C:\ProgramData\JetBrains\TeamCity\lib)。
  7. 现在您可以运行MaintainDB而不会收到有关sqljdbc_auth.dll不在JAVA库路径中的错误。

    请参阅Creating Backup via maintainDB command-line tool - maintainDB Startup Options,了解为何需要设置两个环境变量。