繁体   English   中英

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

[英]Error "no sqljdbc_auth in java.library.path" installing TeamCity on Windows Server 2012

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

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

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

即使您在 64 位平台上,Teamcity 也会安装 32 位版本,除非您故意使用 64 位。 因此,我将向您提供有关在 Teamcity SQL 数据库设置中使用 Windows 身份验证的 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. 打开系统 > 高级系统设置 > 环境变量并添加一个系统变量 TEAMCITY_SERVER_OPTS 设置为值-Djava.library.path=<TeamCity_data_dir>\\lib或运行setx TEAMCITY_SERVER_OPTS=-Djava.library.path=<TeamCity_data_dir>\\lib
  6. 在所有对话框中单击确定并重新启动 Teamcity 服务。

现在您可以使用 Windows 身份验证将 Teamcity 连接到 SQL 服务器,然后向导将创建数据库。

编辑:2020 年 1 月 27 日

对于 2019.2.1 更新,我不得不将 sql_jdbcauth.dll 文件移动到<TeamCity_data_dir>\\system\\caches\\jdbc\\native\\windows-i386这可能只是升级过程中的一个错误。

这个

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

帮助过我。

我使用了 JDBC 4.1 版本。

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

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

如果您在 32 位上运行,您只需将sqljdbc_auth.dll的 x86 版本(从 jdbc 下载)复制到<TeamCityProgramDir>\\bin

您应该检查您的 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:\\BuildServer\\ 下找不到本机库 sqljdbc_auth.dll lib\\jdbc\\native; 将继续查找 sun.boot.library.path 和 java.library.path。

sqljdbc_auth.dll库放入E:\\BuildServer\\lib\\jdbc\\native\\windows-i386并重新启动服务后一切正常; 无需干预bin文件夹(它们会在 TC 升级期间重置)或定义环境变量。

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

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

  1. 按照使用 MS SQL Server 设置 TeamCity直到您需要设置 JDBC 驱动程序。
  2. 使用设置 SQL Server 所用的相同 Windows 帐户登录到 TeamCity 服务器。
  3. 他们说使用当前版本下载 6.0+ 驱动程序,然后参考 4.x 版本。 您需要Downloads\\Microsoft JDBC Driver 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 驱动程序下载,将Downloads\\Microsoft JDBC Driver 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 )。

现在您可以运行MaintainDB 而不会出现sqljdbc_auth.dll 不在JAVA 库路径中的错误。

请参阅通过维护数据库命令行工具创建备份 - 维护数据库启动选项,了解为什么需要设置这两个环境变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM