用以下命令是否可以达到收缩SQL数据库的效果?

来源:百度知道 编辑:UC知道 时间:2024/07/04 07:09:00
请教,用以下命令是否可以达到收缩数据库的效果?
1、backup log 库名 with no_log
2、DUMP TRANSACTION 库名 WITH NO_LOG
-----------------------------------------
关于:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库(没操作权限,因是买的主机,点——所有任务--收缩数据库是灰色的——不可执行状态)鉴于这种情况下,用上面的两条命令不知能否达到收缩数据库的效果?如果不能,有没在查询分析器里能执行并可达到收缩数据库的效果的语句?

----日志收缩

declare @name varchar(25)
declare @sql varchar(1000)
declare @logid int

DECLARE sysdatabase_name cursor for select /*top 5 部分处理*/ name from master.dbo.sysdatabases

open sysdatabase_name

FETCH NEXT FROM sysdatabase_name into @name

WHILE @@FETCH_STATUS = 0
BEGIN

if ( @name not in ('xxx')) --不需要进行日志收缩
begin
set @sql =' declare @logid int
use ' + @name+'
select @logid = fileid from sysfiles where right(rtrim(filename),3) = ''ldf''

BACKUP LOG ' + @name+' WITH NO_LOG
DBCC SHRINKFILE (@logid) '

exec(@sql)

end

FETCH NEXT FROM sysdatabase_name into @name

END

CLOSE sysdatabase_name
DEALLOCATE sysdatabase_name

SQL 2005下测试通过!·