2012-02-24 7 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-parameters-to-a-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 명령 줄 도구를 사용하여 지정할 수 있습니다 SQLCMD 모드 "에서 Tools > Options

enter image description here

변경된 SSMS의 새 창은 이미 열려있는 창에는 적용되지 않습니다.

관련 문제