脚本SQL Server 2008 R2的备份

问题描述 投票:0回答:1

我一直在尝试按照此链接自动执行数据库备份:

https://support.microsoft.com/en-us/help/2019698/how-to-schedule-and-automate-backups-of-sql-server-databases-in-sql-se

我已经在[master]数据库中加载了存储过程,并创建了一个批处理文件来执行存储过程。

使用SQL Server身份验证运行下面的批处理文件时,我的备份位置中没有任何输出

SQLCMD -S .\servername -U username -P password 
       -Q "EXEC sp_BackupDatabases  @databaseName='databasename', @backupType=’F’, @backupLocation = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup'"

我确保用户名登录具有我正在尝试备份的数据库的适当角色成员资格(db_backupoperatordb_owner一起被选中)。

我也不确定如何生成日志文件以查看是否有任何回溯 - 批处理文件刚刚完成而没有输出。

以下是服务器属性:

Product: Microsoft SQL Server Express Edition with Advanced Services
Operating System: Microsoft Windows NT 6.1 (7601)
Platform: NT INTEL X86
Version: 10.50.1617.0 RTM

如果有人能帮助我,我非常感谢,谢谢。

sql sql-server sql-server-2008-r2
1个回答
0
投票

你的错误在这里:

@backupLocation = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup'

在文档中写了如何指定路径:

例1

sqlcmd -S .\EXPRESS –E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'" 

请注意路径中的最后一个斜杠。

现在,简化的代码执行如下:

declare @backupLocation nvarchar(200) = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup',
        @DBNAME sysname = 'databasename',
        @BackupFile varchar(100)

SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ '20190222'+ '.BAK'
select @BackupFile

所以文件名是

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backupdatabasename_FULL_20190222

你应该在C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\中寻找它

© www.soinside.com 2019 - 2024. All rights reserved.