2011-06-14 88 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