よし、これがシナリオだ。
CruiseControl.NET (バージョン: 1.5.7256.1) は、プロジェクトを実行してデータベースを再構築します。CruiseControl.NET Windows サービスは、CC.NET 用に作成した Windows ユーザーとして実行されています。プロジェクトにはいくつかのタスクがありますが、それらはすべて正常に実行されます。Process
ただし、実行されるタスクの 1 つは、バッチ ファイルを生成し、.NETクラスのインスタンスを介して実行する C# で作成したコンソール ベースのユーティリティです。
バッチ ファイルは適切に生成され、プロセスは C# で正常に実行されます。ただし、実行されるバッチ ファイルは、SQLServer (バージョン 2005 SP3) の sqlcmd コマンド ライン ユーティリティを実行します。sqlcmd は期待どおりに実行されますが、sqlcmd のオプションの 1 つが適用されません... -I (引用符で囲まれた識別子をオンにします)。
例えば
sqlcmd -U %1 -P %2 -S %3 -d %4 -i someScript.sql -k -b -I >> %LogFileName%
奇妙なことに、これを継続的インテグレーション サーバーのコマンド プロンプトから実行すると、-I が適用された状態で実行されます。
私はとても混乱しています。sqlcmd
プロセスを実行しているユーザーに十分な権限がなかったために失敗したかどうかは理解できますし、SQLServer 認証が失敗した場合に SQLServer 側で何か問題が発生したかどうかは理解できますが、それは機能しますが、オプションを適用しませんsqlcmd
。不思議。