137 votes

Erreur de SQL Server ':setvar'.

J'essaie de créer des variables script en T-SQL comme suit :

    /*
    Deployment script for MesProduction_Preloaded_KLM_MesSap
    */

    GO
    SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;

    SET NUMERIC_ROUNDABORT OFF;

    GO
    :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap"

Cependant, lorsque je l'exécute, j'obtiens une erreur indiquant "syntaxe incorrecte près de ':'. Qu'est-ce que je fais de mal ?

273voto

Andrew Points 14278

La fonction :setvar ne fonctionne qu'en mode commande SQL. Il est donc possible que vous soyez en train d'exécuter normalement le langage SQL dans le Management Studio et que vous n'ayez pas basculé en mode commande.

Cela peut être fait par le biais de l'interface utilisateur dans SQL Server Management Studio en allant dans le menu "Query", et en sélectionnant "SQLCMD mode".

22voto

Muhammad Awais Points 1735

Il suffit d'activer le mode sqlcmd dans SQL Server Management Studio comme décrit dans l'image suivante.

enter image description here

2voto

POUR SQL2012 :

allez dans : outils/options/Query Execution et cochez la case par défaut, ouvrir les nouvelles requêtes en mode SQLCMD.

Appuyez sur le bouton Nouvelle requête et assurez-vous que les définitions des variables sont mises en évidence, votre script devrait s'exécuter correctement maintenant.

Versions précédentes :

http://blog.sqlauthority.com/2013/06/28/sql-server-how-to-set-variable-and-use-variable-in-sqlcmd-mode/

0voto

KM. Points 51800

Essayez de remplacer :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap"

avec :

USE [MesProduction_Preloaded_KLM_MesSap]
GO

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X