22,300
社区成员




exec('BACKUP DATABASE data_fast_'+ltrim(@i)+' TO DISK =" '+@diskPath+'" WITH FORMAT;')
IF OBJECT_ID('sp_BackupDatabases') IS NOT NULL
DROP PROC sp_BackupDatabases
GO
CREATE PROCEDURE sp_BackupDatabases
AS
BEGIN
--设置备份数据库的存放目录
DECLARE @diskPath NVARCHAR(300),@sql NVARCHAR(MAX)
DECLARE @i int
set @i=1
while @i<6
begin
SET @diskPath='E:\Database\Backup\data_fast_'+cast(@i as nvarchar(2))+'_'
+CONVERT(VARCHAR, GETDATE(),112)+'_'
+REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')+'.BAK';
SET @sql='BACKUP DATABASE data_fast_'+cast(@i as nvarchar(2))+' TO DISK =N'''+@diskPath+''' WITH FORMAT;'
PRINT @sql
EXEC(@sql)
set @i=@i+1
end
END
GO
exec('BACKUP DATABASE data_fast_'+@i+' TO DISK = '+@diskPath+' WITH FORMAT;')
--改成
exec('BACKUP DATABASE data_fast_'+@i+' TO DISK = '''+@diskPath+''' WITH FORMAT;')
把上面这句改一下就好了,路径少了引号,所以报错了,加上就好了IF OBJECT_ID('sp_BackupDatabases') IS NOT NULL
DROP PROC sp_BackupDatabases
GO
CREATE PROCEDURE sp_BackupDatabases
AS
BEGIN
--设置备份数据库的存放目录
DECLARE @diskPath NVARCHAR(300),@sql NVARCHAR(MAX)
DECLARE @i int
set @i=1
while @i<6
begin
SET @diskPath='E:\Database\Backup\data_fast_'+cast(@i as nvarchar(2))+'_'
+CONVERT(VARCHAR, GETDATE(),112)+'_'
+REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')+'.BAK';
SET @sql='BACKUP DATABASE data_fast_'+@i+' TO DISK =N'''+@diskPath+''' WITH FORMAT;'
PRINT @sql
EXEC(@sql)
set @i=@i+1
end
END
GO