简体   繁体   English

在 SQL 服务器中将文件路径作为变量传递

[英]Passing a file path as a variable in SQL Server

I'm trying to add a file to a file group in order to create a partition in SQL Server.我正在尝试将文件添加到文件组,以便在 SQL 服务器中创建一个分区。 When I pass in a hardcoded file path to the the filename, the code works.当我将硬编码的文件路径传递给文件名时,代码有效。 But when I use a variable for the file path, I get an error但是当我使用变量作为文件路径时,出现错误

Incorrect syntax near @FilePath or Unexpected symbol @FilePath @FilePath 或意外符号@FilePath 附近的语法不正确

This is my code:这是我的代码:

USE StudentRepository

BEGIN
    SET NOCOUNT ON;

    DECLARE @FilePath NVARCHAR(MAX) = "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLEXPRESS\MSSQL\DATA\",
            @FileName NVARCHAR(MAX) = "FirstTerm2020",
            @FileExt NVARCHAR(MAX) = ".NDF";
    DECLARE @count INT = 0;

    ALTER DATABASE StudentRepository   
    ADD FILE   
    (  
        NAME = 'FirstTerm2020',  
        FILENAME = @FilePath + @FileName + @FileExt,  --Error here!
        SIZE = 5MB,  
        MAXSIZE = 100MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP  FirstTerm2020
END

When I pass a hardcoded file path to the filename, it works and creates the required partitions.当我将硬编码文件路径传递给文件名时,它会工作并创建所需的分区。 as below如下

--Code omitted for brevity
FILENAME =  "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLEXPRESS\MSSQL\DATA\FirstTerm2020.NDF"  --No error!

Please I need some help.我需要一些帮助。 How do I pass a file path as a variable?如何将文件路径作为变量传递?

This is how I solved the problem.这就是我解决问题的方法。 I create a dynamic sql and passed the filepath variable like this.我创建了一个动态的 sql 并像这样传递了文件路径变量。


USE StudentRepository

BEGIN
    SET NOCOUNT ON;

    DECLARE @FilePath NVARCHAR(MAX) = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLEXPRESS\MSSQL\DATA\',
            @FileName NVARCHAR(MAX) = 'SecondTerm2022',
            @FileExt NVARCHAR(MAX) = '.NDF';
    DECLARE @count INT = 0;
    DECLARE @sql NVARCHAR(MAX) = '
    ALTER DATABASE StudentRepository ADD FILEGROUP ' + @FileName + ';

    ALTER DATABASE StudentRepository   
    ADD FILE   
    (  
        NAME = '+ @FileName + ',  
        FILENAME = ''' + @FilePath + @FileName + @FileExt + ''',
        SIZE = 5MB,  
        MAXSIZE = 100MB,  
        FILEGROWTH = 5MB  
    )  
    TO FILEGROUP  '+ @FileName
END

EXEC sp_executesql @sql

My major problem was that I was ommitting the three single quotes near @FilePath我的主要问题是我省略了@FilePath 附近的三个单引号

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM