Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 动态传递创建数据库脚本的位置和文件名_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql 动态传递创建数据库脚本的位置和文件名

Sql 动态传递创建数据库脚本的位置和文件名,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我正在尝试将新的文件组和文件添加到现有数据库中 我的剧本: DECLARE @AlterDB NVarchar(4000), @FGName NVarchar(30) = 'Partition_DW2_', @FileLoc NVarchar(50) ='D:\Data\', @CurrentYR NVarchar(10) ='2014' , @FullName Nvarchar(max) Set @FullName = @Fi

我正在尝试将新的文件组和文件添加到现有数据库中

我的剧本:

DECLARE @AlterDB NVarchar(4000),
        @FGName NVarchar(30) = 'Partition_DW2_',
        @FileLoc NVarchar(50) ='D:\Data\',
        @CurrentYR NVarchar(10) ='2014' ,
        @FullName Nvarchar(max) 
 Set @FullName = @FileLoc+@FGName+@CurrentYR+'.ndf'
        Print @fullName
et @AlterDB = 'ALTER DATABASE Partition_DWJ2
                        ADD FILE 
                        (   NAME =  '+@FGName+@CurrentYR+',FILENAME ='+@FullName +',SIZE = 2048KB ,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB
                        )TO FILEGROUP '+@FGName+@CurrentYR

            EXECUTE SP_Executesql @AlterDB ,N'@FullName NVarchar(max)',@FullName=@FullName
            Print @ALterDB 
这会导致错误
“D:”附近的语法不正确。


我做错了什么?

试着给你的
@FileLoc NVarchar(50)='D:\\Data\\'
试着给你的
@FileLoc NVarchar(50)='D:\\Data\\\\'
再加一个反斜杠好吧,假设你实际上是在脚本上使用
Set@AlterDB
而不是
et@AlterDB
,您需要将文件名用单引号括起来:

DECLARE @AlterDB NVarchar(4000),
        @FGName NVarchar(30) = 'Partition_DW2_',
        @FileLoc NVarchar(50) ='D:\Data\',
        @CurrentYR NVarchar(10) ='2014' ,
        @FullName Nvarchar(max) 
 Set @FullName = @FileLoc+@FGName+@CurrentYR+'.ndf'
        Print @fullName
 Set @AlterDB = 'ALTER DATABASE Partition_DWJ2
                        ADD FILE 
                        (   NAME =  '+@FGName+@CurrentYR+',FILENAME ='+CHAR(39)+@FullName+CHAR(39)+',SIZE = 2048KB ,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB
                        )TO FILEGROUP '+@FGName+@CurrentYR

            EXECUTE SP_Executesql @AlterDB ,N'@FullName NVarchar(max)',@FullName=@FullName
            Print @ALterDB 

好的,假设您实际上在脚本上使用
Set@AlterDB
而不是
et@AlterDB
,则需要将文件名括在单引号中:

DECLARE @AlterDB NVarchar(4000),
        @FGName NVarchar(30) = 'Partition_DW2_',
        @FileLoc NVarchar(50) ='D:\Data\',
        @CurrentYR NVarchar(10) ='2014' ,
        @FullName Nvarchar(max) 
 Set @FullName = @FileLoc+@FGName+@CurrentYR+'.ndf'
        Print @fullName
 Set @AlterDB = 'ALTER DATABASE Partition_DWJ2
                        ADD FILE 
                        (   NAME =  '+@FGName+@CurrentYR+',FILENAME ='+CHAR(39)+@FullName+CHAR(39)+',SIZE = 2048KB ,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB
                        )TO FILEGROUP '+@FGName+@CurrentYR

            EXECUTE SP_Executesql @AlterDB ,N'@FullName NVarchar(max)',@FullName=@FullName
            Print @ALterDB 

你为什么要添加
Partition\u DWJetblue2