SQLCMD Erreur de syntaxe lors de l'exécution du script qui fonctionne très bien en studio de gestion

StackOverflow https://stackoverflow.com/questions/2464873

Question

Quand je lance le présent select '$(''test'')' dans SQL Management Studio 2008, il retourne $('test')

Quand je lance sqlcmd -S SERVER -E -d DATABASE -q "select $(''test'')" sur la ligne de commande, il retourne Sqlcmd: Error: Syntax error at line 1 near command '''.

Si je retire le signe dollar cela fonctionne. Est le « $ » un caractère spécial?

Est-ce un bug sqlcmd? Comment puis-je changer le script pour obtenir le résultat souhaité.

Était-ce utile?

La solution

Oui, $(id) a une syntaxe particulière dans SQLCMD: il est une variable de substitution. Vous pouvez exécuter des commandes comme:

sqlcmd /E /S . /v variable=MyTable /Q "select * from $(variable)"

et ceci choisira de MyTable. Comme vous le devinez, le /v est le commutateur pour définir une variable. SSMS d'autre part n'a pas, par défaut, le SQL pour interpréter la substitution des variables. SSMS peut être fait pour ce faire, en cochant l'option 'Open des veuves de requête en mode SQLCMD'.

Pour plus de détails voir mode Utiliser sqlcmd avec les variables de script .

Autres conseils

la commande que vous essayez d'exécuter:

select $('test')

est pas valide. Comme vous le soulignez, lorsque vous supprimez le « $ » cela fonctionne:

select ('test')

Je ne sais pas vraiment ce que vous essayez de faire, vous disposez de trois caractères à double citation ", vous pouvez essayer d'utiliser cette commande:

select '$(test)'

qui serait:

sqlcmd -S SERVER -E -d DATABASE -q "select ''$(test)''"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top