为什么我的sqlcmd .bat由于在Jenkins上登录而失败,而不是在手动运行时失败?

问题描述:

我有一个运行sqlcmd并运行.sql脚本的.bat文件。当我通过用户手动运行它时,Jenkins Service在一切正常的情况下运行。但是当Jenkins运行这个工作来执行相同的.bat文件时,我的登录失败了。为什么我的sqlcmd .bat由于在Jenkins上登录而失败,而不是在手动运行时失败?

我通过詹金斯运行.bat这样的:

C:\MasterFiles\ListingsManagement\LH.bat > batResults.txt 

的蝙蝠看起来是这样的:

sqlcmd -S <Server> -E -i C:\MasterFiles\ListingsManagement\test.sql 
-o C:\MasterFiles\ListingsManagement\results.txt 

,并在通过詹金斯运行错误信息是:

Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login failed for user '<domain>\svc_jenkins'.. 

有意删除了服务器名称和域名。

Sql是2014 Enterprise,Jenkins是1.645,所有这些都在Windows 7 vm上运行。

+0

当您“手动运行”您是否在SQL群集上这样做?据推测,当通过詹金斯运行它是从另一台机器运行。 – RGuggisberg

+0

您可以尝试提供用户名和密码并通过Jenkins运行,而不是使用-E(可信连接)。我认为你的凭证不匹配。 ** sqlcmd -S -U用户名-P密码-i C:\ MasterFiles \ ListingsManagement \ test.sql ** –

+0

-U -P不支持域凭据,我们的DBA不会添加本地用户。我确实重新启动了Jenkins服务并开始工作。它没有任何意义......愚蠢的技术:) –

当您手动运行命令时,您确定您在Jenkins运行的同一台计算机上登录为<domain>\svc_jenkins

可以确认环境变量的内容USERDOMAINUSERNAME比赛<domain>\svc_jenkins?当你手动登录并运行该脚本?

其中一项测试应该标记问题。

+0

这显示了正确的域名和用户名,在我这样做后,我重新启动了Jenkins并开始工作。 –