收缩日志文件代码---改为存储过程
本帖最后由 u010412956 于 2013-04-26 13:59:52 编辑 我用下面的一段sql,是可以成功收缩2008版本的日志文件大小,假如需要收缩日志文件的数据库名为bb。。
一、查出日志文件名字
SELECT file_id, name FROM sys.database_files;
查出的日志文件名为bb_log
二、在简单模式下进行
USE [master]
GO
ALTER DATABASE bb SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE bb SET RECOVERY SIMPLE
GO
USE bb
GO
DBCC SHRINKFILE (N'bb_log' , 11, TRUNCATEONLY)
GO
三、调回到完全模式
USE [master]
GO
ALTER DATABASE bb SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE bb SET RECOVERY FULL
GO
现在我想将这段代码改为存储过程,传入2个参数dbname 和logfile,比如传入上面的bb和bb_log,然后达到收缩日志文件的效果。。。
不知道这个过程应该怎么写? sqlserver 存储过程
[解决办法]
动态可能也不行,因为你要use 又要go,又不能再同一行。非要这样做吗?维护计划不是有这个选项?
[解决办法]
从数据库管理角度,他们这个需求就表明没有管理好数据库,日志本来就不应该频繁收缩,而且如果哪个手痒去执行,说不定整个系统会非常缓慢,再者你这个是无论大小完全收缩到最小,万一ldf到了几十G,一下子收缩,十几个小时都完成不了,这个应该让管理员去做。
[解决办法]
你这是闹那样,直接搞成simple 不得了
[解决办法]