从CruiseControl.NET执行sqlcmd时参数未应用

时间:2010-07-14 20:35:33

标签: c# batch-file cruisecontrol.net sqlcmd

好的,所以这就是场景。

CruiseControl.NET(版本:1.5.7256.1)运行一个项目来重建数据库。 CruiseControl.NET窗口服务作为我们为CC.NET创建的Windows用户运行。项目中有几项任务,但它们都运行良好。但是,运行的任务之一是我在C#中编写的基于控制台的实用程序,它生成批处理文件,然后通过.NET Process类的实例运行它。

正确生成批处理文件,并且该进程在C#中运行正常。但是,运行的批处理文件运行SQLServer(版本2005 SP3)的sqlcmd命令行实用程序。 sqlcmd按预期运行,但sqlcmd的其中一个选项永远不会被应用... -I(打开带引号的标识符)。

e.g。

sqlcmd -U %1 -P %2 -S %3 -d %4 -i someScript.sql -k -b -I  >> %LogFileName%

奇怪的是,如果我从持续集成服务器上的命令提示符运行它,它会在-I被应用的情况下运行。

我很困惑。我理解sqlcmd是否失败,因为执行进程的用户没有足够的权限,如果SQLServer身份验证失败,我会理解SQLServer端是否出现问题,但是它是否有效但是没有对sqlcmd应用选项是不可思议的。

1 个答案:

答案 0 :(得分:0)

可能是因为 - 我是最后一个参数吗?也许那里有一个缺少的空间或某些东西..你试过切换参数顺序吗?

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