1

好的,这就是场景。

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选项神秘。

4

1 回答 1

0

可能是因为 -I 是最后一个参数吗?也许那里缺少空格或其他东西..您是否尝试过切换参数顺序?

(另外,你为什么要运行一个创建批处理文件并调用它的 C# 控制台应用程序?cc.net 不能自己运行这个文件吗?)

于 2010-07-18T20:24:19.703 回答