2010-07-14 2 views
1

OK, voici le scénario. CruiseControl.NET (Version: 1.5.7256.1) exécute un projet pour reconstruire une base de données.Paramètre non appliqué lors de l'exécution de sqlcmd à partir de CruiseControl.NET

Le service CruiseControl.NET Windows s'exécute en tant qu'utilisateur Windows que nous avons créé pour CC.NET. Il y a plusieurs tâches dans le projet mais elles fonctionnent toutes bien. Cependant, l'une des tâches qui s'exécute est un utilitaire basé sur la console que j'ai écrit en C# qui génère un fichier batch, puis l'exécute via une instance de la classe .NET Process.

Le fichier de commandes est généré correctement et le processus s'exécute correctement en C#. Toutefois, le fichier de commandes qui s'exécute exécute l'utilitaire de ligne de commande sqlcmd pour SQLServer (Version 2005 SP3). sqlcmd s'exécute comme prévu, mais l'une des options de sqlcmd n'est jamais appliquée ... -I (en activant les identifiants entre guillemets).

par exemple.

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

La chose étrange est si je lance ce à partir d'une invite de commande sur le serveur d'intégration continue, il fonctionne avec -I appliquée.

Je suis très confus. Je comprendrais si le sqlcmd a échoué parce que l'utilisateur exécutant le processus n'avait pas assez de privilèges et je comprendrais que quelque chose s'est mal passé du côté de SQLServer si l'authentification de SQLServer a échouée, mais pour qu'elle fonctionne mais n'applique pas une option sqlcmd est mystifiant.

Répondre

0

Serait-ce parce que -I est le dernier paramètre? Peut-être y a-t-il un espace manquant ou quelque chose ... avez-vous essayé de changer l'ordre des paramètres?

(aussi, pourquoi exécutez-vous une application console C# qui crée un fichier batch et l'invoque? Impossible de lancer cc.net ce fichier lui-même?)

Questions connexes