2011-06-14 125 views
3
DECLARE @dbfilepath nvarchar(128) 
SET @dbfilepath = 'C:\SqlDataFiles\Cache.mdf' 
GO 

USE [master] 
GO 
CREATE DATABASE [Cache] ON PRIMARY 
(NAME = N'Cache', FILENAME = @dbfilepath, SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
GO 

爲什麼不能正常工作?從變量中獲取字符串

它提供:

消息102,15級,狀態1,第3行 附近有語法錯誤@dbfilepath「。

+0

您不能在CREATE DATABASE語句中使用變量 – 2011-06-14 15:48:11

回答

1

您需要執行它;

USE [master] 
GO 
DECLARE @dbfilepath nvarchar(128) = 'C:\MSSQL\Cache.mdf' 
DECLARE @SQL NVARCHAR(MAX) = N'CREATE DATABASE [Cache] ON PRIMARY (NAME = N''Cache'', FILENAME = ''' + @dbfilepath + ''', SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)' 
EXEC(@SQL) 
0

試試這個:

DECLARE @dbfilepath nvarchar(128); 
SET @dbfilepath = 'C:\\SqlDataFiles\\Cache.mdf'; 
PRINT @dbfilepath; 

要在創建數據庫語句中使用@dbfilepath,動態sql需要使用。

+0

它正在打印與上述相同的路徑。 – Pankaj 2011-06-14 15:48:35

+0

@SQL。是。但是現在錯誤不會出現,問題中提到了這個錯誤。 – 2011-06-14 15:50:44

+0

@Alex K的答案顯示瞭如何使用動態sql。 – 2011-06-14 15:56:51