【问题标题】:Getting error when trying to set SQL Server Backup with Date Filename尝试使用日期文件名设置 SQL Server 备份时出错
【发布时间】:2019-11-18 14:52:58
【问题描述】:

我使用以下脚本进行正常备份:

USE SysproCompanyT
GO

EXEC('BACKUP DATABASE [Company] TO  DISK = N''G:\SQLBackups\INSTANCE1\MonthEndBackup\Company\MonthEndBackup.bak'' WITH NOFORMAT, COPY_ONLY,INIT,
        NAME = N''MonthEndBackup'', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
        ')
PRINT 'Backup of Syspro Company started'
GO
PRINT 'Backup of Syspro Company complete'

这可行,但我正在尝试编写一个脚本,该脚本会给我一个文件名作为日期,并尝试了以下操作:

DECLARE @TimeDate Varchar(256);

SET @TimeDate = REPLACE(CONVERT(Varchar(256),GETDATE(), 126), ':','');
DECLARE @location VARCHAR(200) = '\\AAVM-SQL01\SQLBackups$\INSTANCE1\MonthEndBackup\Company' + @TimeDate + '.bak'
BACKUP DATABASE [Company]
TO DISK = @location
WITH NOFORMAT, INIT, NAME= Company, SKIP, NOREWIND, NOUNLOAD, STATS=10

不幸的是,我没有得到备份,如果我在语句末尾添加 GO,我会收到错误

SQL Server 本地客户端 10:尝试创建备份时必须声明标量变量

有人有什么想法吗?

谢谢。

梦露

【问题讨论】:

    标签: sql sql-server tsql ssms-2012


    【解决方案1】:

    DISK 的值必须是字符串文字。如果要传递动态值,则需要使用动态SQL。

    DECLARE @TimeDate Varchar(256),
            @SQL nvarchar(MAX),
            @CRLF nchar(2) = NCHAR(13) + NCHAR(10);
    
    SET @TimeDate = REPLACE(CONVERT(Varchar(256),GETDATE(), 126), ':','');
    DECLARE @location VARCHAR(200) = '\\AAVM-SQL01\SQLBackups$\INSTANCE1\MonthEndBackup\Company' + @TimeDate + '.bak'
    
    SET @SQL = N'BACKUP DATABASE [Company]' + @CRLF +
               N'TO DISK = N''' + REPLACE(@location, '''','''''') + N'''' + @CRLF + --Replace is there incase the path ever changes, and it might have a single quote (') in it.
               N'WITH NOFORMAT, INIT, NAME= Company, SKIP, NOREWIND, NOUNLOAD, STATS=10';
    EXEC sp_executesql @SQL;
    

    【讨论】:

    • 这不起作用。我希望保持相同的路径。
    • “这不起作用。”并没有告诉我太多为什么它不起作用。
    • Msg 102, Level 15, State 1, Line 3 “公司”附近的语法不正确。
    • @domdew 是由于 NAME= Company,这是您在原始代码中提供的内容。
    • Larnu 我更正了所有内容,现在我得到了 @SQL 的必须声明标量变量错误。
    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 2015-12-26
    • 2017-09-19
    • 2020-11-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多