好的,这就是场景。
CruiseControl.NET(版本:1.5.7256.1)运行一个项目来重建数据库。CruiseControl.NET windows 服务作为我们为 CC.NET 创建的 windows 用户运行。项目中有几个任务,但它们都运行良好。但是,运行的任务之一是我用 C# 编写的基于控制台的实用程序,它生成一个批处理文件,然后通过 .NETProcess
类的实例运行它。
批处理文件已正确生成,并且该过程在 C# 中运行良好。但是,运行的批处理文件为 SQLServer(版本 2005 SP3)运行 sqlcmd 命令行实用程序。sqlcmd 按预期运行,但从未应用 sqlcmd 的选项之一... -I(打开带引号的标识符)。
例如
sqlcmd -U %1 -P %2 -S %3 -d %4 -i someScript.sql -k -b -I >> %LogFileName%
奇怪的是,如果我从持续集成服务器上的命令提示符运行它,它会在应用 -I 的情况下运行。
我很困惑。我会理解是否sqlcmd
失败是因为执行该进程的用户没有足够的权限,如果 SQLServer 身份验证失败,我会理解 SQLServer 端是否出现问题,但它可以工作但不应用sqlcmd
选项神秘。