ALTER PROCEDURE [dbo].[ComDatabaseBak]
@basename varchar(250), --'t_basename'
@bakpath varchar(250), --'C:\WorkSpace\DatabaseBak\t_basename.bak'
@isclear int=0, --0:只备份 1:收缩并备份
@Result varchar(10) output --返回状态
AS
BEGIN
Declare @sql nvarchar(4000)
Declare @sign varchar(5)
set @sign=''
if(@isclear>=1)
begin
Exec('ALTER DATABASE '+@basename+' SET RECOVERY SIMPLE') --设置简单恢复模式
Exec('DBCC SHRINKFILE ('+@basename+'_Log, 1) ') --收缩日志文件
Exec('DBCC SHRINKDATABASE('+@basename+')') --收缩数据库
Exec('ALTER DATABASE '+@basename+' SET RECOVERY FULL') --恢复为原模式
set @sign='clear'
end
SET @sql = 'BACKUP DATABASE '+@basename+' TO DISK =@bp WITH NOFORMAT, NOINIT,NAME = N''AutoBak'',SKIP, NOREWIND, NOUNLOAD'
EXEC sp_executesql @sql,N'@bp as varchar(200)',@bp=@bakpath
if (@@error<>0)
set @Result='success'
else
set @Result='error'
END
SqlServer收缩并备份数据库存储过程
最新推荐文章于 2024-07-29 18:16:59 发布