2010-10-29 17 views
2

L'exécution du script suivant via sqlcmd échoue. Cependant, l'exécution via ssmo ou SQL Server Management Studio fonctionne.L'utilisation de guillemets doubles dans un script T-SQL échoue dans SQLCMD, mais pas dans SSMO

sqlcmd -S . -d test -i input.sql 

input.sql:

CREATE FUNCTION test() 
RETURNS @t TABLE ("ID" INT) 
AS 
BEGIN 
RETURN 
END 

Même quand je mets SQL Server Management Studio en mode sqlcmd, il échoue encore. C'est un problème car nous testons nos scripts avec SSMS, mais déployons avec SQLCMD. Ainsi, nous découvrons seulement que notre code ne fonctionne pas lorsque nous essayons de déployer.

Pourquoi sqlcmd se comporte-t-il de la sorte? Y a-t-il un moyen de l'éteindre?

+0

Pourquoi inscrivez-vous le nom du champ avec des guillemets? Si vous voulez démarquer l'identifiant, utilisez [ID]. – Lazarus

Répondre

5

Si vous avez vraiment besoin d'utiliser des guillemets pour délimiter les identificateurs dans vos scripts, vous aurez besoin de définir l'option quoted_identifier SQLCMD en utilisant l'interrupteur -Ienable. Il est désactivé par défaut dans SQLCMD mais activé par défaut dans SSMS, ce qui explique pourquoi vos tests fonctionnent dans SSMS.

En savoir plus sur QUOTED_IDENTIFIER here.

0

Utilisez des crochets pour cela: [ID]