Как передать параметры в сценарий SQL Server, вызываемый с помощью sqlcmd? - PullRequest
25 голосов
/ 28 сентября 2010

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

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 Ответ

34 голосов
/ 28 сентября 2010

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

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

Затем в файле сценария

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%)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...