給你一個備份的預存程序你調用就可以了: create PROCEDURE GY_DBBak @bakequip int, -- 備份裝置:磁碟&磁帶
@bakpath varchar(50), -- 帶全路徑的備份檔案名 @baktype int, -- 完全備份&增量備份
@baklog int, -- ‘0’備份日誌
@bakdb int, -- ‘0’備份資料庫
@kind varchar(7), --備份還是恢複 @retmsg varchar(20) output --返回資訊 AS DECLARE @DevName_data varchar(50) DECLARE @DevName_log varchar(50) declare @db_path varchar(100) declare @log_path varchar(100) DECLARE @RC INT SELECT @db_path = @bakpath + '.dat ' SELECT @log_path = @bakpath + 'log.dat ' SELECT @RC=0 select @DevName_data= 'dali ',@DevName_log= 'dalilog ' DBCC CHECKDB(資料庫名) /*********************************************************** ** CREATE BACKUP AND RESTORE DEVICES ************************************************************/ IF @RC=0 BEGIN EXEC sp_addumpdevice 'disk ', @DevName_data,@db_path exec sp_addumpdevice 'disk ', @DevName_log,@log_path select @rc=@@error IF @RC <> 0 begin EXEC SP_DropDevice @Devname_data exec sp_dropdevice @devname_log SELECT @RC=-1000 return @rc end END IF @kind= 'backup ' BEGIN IF @bakequip=0 BEGIN IF @baktype=0 BEGIN IF @bakdb=0 BEGIN BACKUP DATABASE 資料庫名 TO DISK=@Devname_data
WITH INIT END IF @baklog=0 BEGIN BACKUP LOG 資料庫名 WITH NO_LOG
BACKUP LOG 資料庫名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE END END ELSE BEGIN IF @bakdb=0 BEGIN BACKUP DATABASE 資料庫名 TO DISK=@DevName_data
WITH NOINIT END IF @baklog=0 BEGIN BACKUP LOG 資料庫名 WITH NO_LOG
BACKUP LOG 資料庫名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE END END END SELECT @retmsg= 'Database Backup成功! ' END IF @kind= 'restore ' BEGIN RESTORE DATABASE 資料庫名 FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg= '恢複資料庫成功! ' END EXEC SP_DropDevice @Devname_data exec sp_dropdevice @devname_log RETURN 0 ---測試: declare @ varchar(100) exec gy_dbbak 0, 'aa ',0,0,0, 'backup ',@ output select @ ------------------------------------------------- 備份裝置: sp_helpdevice 或 use master select * from sysdevices |