即使您的平台是64位的,Teamcity会安装32位版本,除非您有意使用64位版本。因此,我将为您提供在Teamcity SQL数据库设置中使用Windows身份验证的32位说明。对于64位设置,说明是相同的,只需将x86更改为x64。
<TeamCity_data_dir>\lib\jdbc\ sqljdbc42.jar
auth\x86\sqljdbc_auth.dll
到 <TeamCity_data_dir>\lib\sqljdbc_auth.dll
-Djava.library.path=<TeamCity_data_dir>\lib
或运行 setx TEAMCITY_SERVER_OPTS=-Djava.library.path=<TeamCity_data_dir>\lib
现在,您可以使用Windows身份验证将Teamcity连接到SQL服务器,之后向导将创建数据库。
在2019.2.1更新中,我不得不将sql_jdbcauth.dll文件移动到<TeamCity_data_dir>\system\caches\jdbc\native\windows-i386
,这可能只是升级过程中的一个错误。
sqljdbc_auth.dll
文件放入<TeamCityProgramDir>\bin
目录即可。 - Brian Lacy我通过在数据库配置设置期间使用SQL Server身份验证而不是Windows身份验证来解决了这个问题。不确定为什么这样可以修复错误,因为它涉及到Java环境变量,但我只能假设该错误是由于无法登录数据库并以某种原因抛出了一个不相关的错误。
这似乎是TeamCity抛出了错误的错误消息。如果您遇到此错误,请尝试切换到SQL Server身份验证。
-Djava.library.path=path/to/dll
,请在此处阅读更多信息 https://dev59.com/-ajja4cB1Zd3GeqP5RR0#50115530 - rafalkasasqljdbc_auth.dll
复制到<TeamCityProgramDir>\bin
中即可。TeamCityProgramDir\bin
和TeamCityProgramDir\lib
,现在一切都很好。 - demoncodemonkeybin
文件夹中的文件会在 TeamCity 自动更新期间被移动:_[2019-03-19 16:18:14,375] INFO - jetbrains.buildServer.UPDATE - 将 C:\TeamCity\bin\sqljdbc_auth.dll 移动到 .old_。 - janv8000c:\TeamCity\logs\teamcity-server.log
)提到了以下内容:
将[2019-03-20 07:54:56,045] INFO - jetbrains.buildServer.STARTUP - Native library sqljdbc_auth.dll was not found under either E:\BuildServer\lib\jdbc\native\windows-i386 or E:\BuildServer\lib\jdbc\native; will continue looking in sun.boot.library.path and java.library.path.
sqljdbc_auth.dll
库放入E:\BuildServer\lib\jdbc\native\windows-i386
并重新启动服务后,一切都很好;无需干涉bin
文件夹(它们在TC升级期间会被重置)或者定义环境变量。TEAMCITY_SERVER_OPTS
的新系统环境变量,值为 -Djava.library.path=C:\ProgramData\JetBrains\TeamCity\lib
。TEAMCITY_MAINTAINDB_OPTS
的系统环境变量,值与上述相同(-Djava.library.path=C:\ProgramData\JetBrains\TeamCity\lib
)。现在您可以运行MaintainDB而不会出现关于sqljdbc_auth.dll不在JAVA库路径中的错误。
请参见通过maintainDB命令行工具创建备份 - maintainDB启动选项,了解为什么需要设置两个环境变量。
TEAMCITY_SERVER_OPTS
,正确的变量值是-Djava.library.path=<TeamCity_data_dir>\lib
,当然要用实际的teamcity数据目录路径替换<TeamCity_data_dir>
。 - Sam Rueby