web-dev-qa-db-fra.com

Comment passer en paramètres sur un script SQL Server appelé avec SQLCMD?

Est-il possible de passer des paramètres à un script SQL Server? J'ai un script qui crée une base de données. Il est appelé à partir d'un fichier de commandes utilisant SQLCMD. Une partie de ce script SQL est la suivante:

CREATE DATABASE [SAMPLE] ON  PRIMARY 
( NAME = N'SAMPLE', FILENAME = N'c:\dev\SAMPLE.mdf' , SIZE = 23552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'SAMPLE_log', FILENAME = N'c:\dev\SAMPLE_log.ldf' , SIZE = 29504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

Je veux pouvoir passer dans les noms de fichiers pour la base de données et le journal afin que je n'ai pas à coder "C:\dev\sample.mdf" et 'c:\dev\sample_log.ldf'.

Y a-t-il un moyen de faire cela? Je suis en cours d'exécution Microsoft SQL Server 2008 Express. Faites-moi savoir si vous avez besoin de plus d'informations.

25
Jeremy

Utilisez le commutateur -v pour passer dans des variables.

sqlcmd -v varMDF="C:\dev\SAMPLE.mdf" varLDF="C:\dev\SAMPLE_log.ldf"

Puis dans votre fichier de script

CREATE DATABASE [SAMPLE] ON  PRIMARY 
( NAME = N'SAMPLE', FILENAME = N'$(varMDF)' , SIZE = 23552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'SAMPLE_log', FILENAME = N'$(varLDF)' , SIZE = 29504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
35
Joe Stefanelli