복붙노트

[SQL] SQL 서버 : DATABASE를 생성에 사용되는 매개 변수

SQL

SQL 서버 : DATABASE를 생성에 사용되는 매개 변수

나는 데이터 파일과 로그 파일 매개 변수를 사용하여 SQL 스크립트에서 생성 된 경로를 지정합니다. 여기에 내가 쓴 것입니다 :

DECLARE @DataFilePath AS NVARCHAR(MAX)

SET @DataFilePath = N'C:\ProgramData\Gemcom\'

DECLARE @LogFilePath AS NVARCHAR(MAX)

SET @DataFilePath = N'C:\ProgramData\Gemcom\'


USE master
Go
CREATE DATABASE TestDB
ON 
PRIMARY 
( NAME = N'TestDB_Data', FILENAME = @DataFilePath )
LOG ON 
( NAME = N'TestDB_Log', FILENAME = @LogFilePath  )

GO

불행히도,이 작동하지 않습니다. 나는 SQL Server 관리 Studio에서 그것을 실행하려고하면, 나는 오류가 발생했습니다

내가 무엇을 목적으로하는 경우에도 가능하면 궁금?

감사

해결법

  1. ==============================

    1.당신은 동적 SQL을 사용해야합니다

    당신은 동적 SQL을 사용해야합니다

    SELECT @sql = 'CREATE DATABASE TestDB ON PRIMARY ( NAME = ''TestDB_Data'', 
     FILENAME = ' + quotename(@DataFilePath) + ') LOG ON ( NAME = ''TestDB_Log'', 
    FILENAME = ' + quotename(@LogFilePath) + ')'
    
    EXEC (@sql)
    
  2. ==============================

    2.SQLCMD 모드를 사용해보십시오. SSMS에서 쿼리 메뉴에서, 다음, SQLCMD 모드 선택이 스크립트를 실행합니다.

    SQLCMD 모드를 사용해보십시오. SSMS에서 쿼리 메뉴에서, 다음, SQLCMD 모드 선택이 스크립트를 실행합니다.

    :SETVAR DataFilePath N'C:\ProgramData\Gemcom\TestDB.mdf'    
    :SETVAR LogFilePath N'C:\ProgramData\Gemcom\TestDB.ldf'
    
    USE master
    Go
    CREATE DATABASE TestDB
    ON 
    PRIMARY 
    ( NAME = N'TestDB_Data', FILENAME = $(DataFilePath) )
    LOG ON 
    ( NAME = N'TestDB_Log', FILENAME = $(LogFilePath)  )
    
    GO
    
  3. from https://stackoverflow.com/questions/5626850/sql-server-use-parameter-in-create-database by cc-by-sa and MIT license