Как передать параметры SQL Server script с sqlcmd?

Можно ли передавать параметры на SQL Server script? У меня есть script, который создает базу данных. Он вызывается из командного файла с использованием sqlcmd. Часть этого SQL script выглядит следующим образом:

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%)

Я хочу иметь возможность передавать имена файлов для базы данных и журнала, чтобы мне не пришлось жестко кодировать "C:\dev\SAMPLE.mdf" и "C:\dev\SAMPLE_log.ldf".

Есть ли способ сделать это? Я запускаю Microsoft SQL Server 2008 Express. Дайте мне знать, если вам нужна дополнительная информация.

Ответ 1

Используйте переменную -v для передачи переменных.

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

Затем в файле 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%)