2012-02-24 11 views
2

SQLスクリプトファイルを使用してデータベースを作成しますが、データベース名の代わりにパラメータを与えることはできません。あなたがSQLCMD compatibility mode in SQL Server Management Studioを使用している場合SQLスクリプトファイルでパラメータを使用するにはどうすればいいですか

Declare @Test as nvarchar(max) 

CREATE DATABASE [@Test] ON PRIMARY 
    (NAME = N'@Test', 
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\@Test.mdf', 
    SIZE = 11264KB , MAXSIZE = 51200KB , FILEGROWTH = 10%) 
LOG ON 
(NAME = N'@Test_log', 
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\@Test_1.ldf' , 
    SIZE = 9216KB , MAXSIZE = 25600KB , FILEGROWTH = 1024KB) 
GO 

ALTER DATABASE [@Test] SET COMPATIBILITY_LEVEL = 100 
GO 
+0

このパラメータはどのように使用する予定ですか?あなたはそれを宣言していますが、あなたはそれに価値を与えていません。 – Prutswonder

+0

私はこれをC#で実行し、ıそこに値を送信したい – seyma

+0

[sqlcmdで呼び出されたSQL Serverスクリプトにパラメータを渡す方法は?](http://stackoverflow.com/questions/3814302/how- to-pass-in-sql-server-script-with-sqlcmd) – gbn

答えて

2

、あなたはSQLCMDパラメータを使用することができます。

:setvar dbname YourDatabase 

CREATE DATABASE $(dbname) ON PRIMARY 
(NAME = $(dbname), 
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\$(dbname).mdf', 
    SIZE = 11264KB , MAXSIZE = 51200KB , FILEGROWTH = 10%) 
LOG ON 
(NAME = N'$(dbname)_log', 
    FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\$(dbname)_log.ldf' , 
    SIZE = 9216KB , MAXSIZE = 25600KB , FILEGROWTH = 1024KB) 
GO 

ALTER DATABASE $(dbname) SET COMPATIBILITY_LEVEL = 100 
GO 

これらのパラメータは、あなたが「有効にすることができ

コマンドラインでSQLCMDコマンドラインツールを使用して指定することができますSQL Server Management StudioのSQLCMDモード "Tools > Options

enter image description here

は、開いているSSMSの新しいウィンドウに影響します。すでに開いているウィンドウには適用されません。

関連する問題