web-dev-qa-db-ja.com

sqlcmdで呼び出されるSQL Serverスクリプトにパラメーターを渡す方法は?

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を実行しています。さらに情報が必要な場合はお知らせください。

25
Jeremy

-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%)
35
Joe Stefanelli