2009-06-18 4 views
2

Nous avions des problèmes avec Powershell et SQLCMD, quand il y avait des sapces dans la variable de paramètres -v powershell n'exécuterait pas la commande.Powershell SQLCMD

par exemple.

sqlcmd ... -v VAR="Some space" 

Est-ce que quelqu'un a déjà vécu cela ou sait comment résoudre le problème?

Merci,

B

+0

avez-vous essayé un% 20 au lieu de l'espace? –

+2

Si vous utilisez SQL 2008, je recommande fortement d'utiliser Invoke-SqlCmd à la place (avec les autres cmdlets et fournisseurs). –

+0

related: http://stackoverflow.com/questions/9714054/how-to-execute-sqlcmd-from-powershell –

Répondre

5

La syntaxe ci-dessus fonctionne pour la ligne de commande PS mais échoue dans un script.

Nous avons eu du mal à comprendre comment faire fonctionner ce système. Un de nos gars de QA très intelligents est finalement venu avec ce qui suit:

$variableWithSpaces="one two three" 
$mySqlCmd = "sqlcmd -E -S $dbServer -i $script -v var=```"$variableWithSpaces```" " 
Invoke-Expression $mySqlCmd 

Branchez moche mais cela fonctionne.

+0

Essayé pendant 4+ heures, même en construisant des commandes qui avaient l'air bien en echoargs mais toujours échoué. Cela a finalement réussi. PSH bascule . – ryascl

2

Powershell passera en fait le paramètre au programme "VAR=Some space". Peut-être que sqlcmd trébuche sur cela. En utilisant

 
VAR=`"Some space`" 

à la place, il sera adopté comme VAR="Some space". Peut-être que cela résout le problème.