sql server 2005 压缩实例下所有数据库文件及日志文件(转载)作者:Program Life

--01.get all database name
SELECT DBNAME   = DB_NAME(s_mf.database_id)    INTO  #DN
    
FROM
        sys.master_files s_mf
    
WHERE
        s_mf.state 
= 0 and -- ONLINE
        HAS_DBACCESS(DB_NAME(s_mf.database_id)) = 1 -- Only look at databases to which we have access
    GROUP BY  s_mf.database_id
    
ORDER BY 1
--02.use cursor to fetch db name
--
---02.01 declare cursor
DECLARE cur CURSOR FOR  
SELECT DBNAME FROM  #DN

-----02.02 open cursor & declare var
OPEN  cur
DECLARE @DbName VARCHAR(200 )
-----02.03 loop db bane
FETCH NEXT FROM cur into @DbName
WHILE(@@FETCH_STATUS=0 )
  
BEGIN
        
print 'shrinking ' + @DbName + ' ...'
-------02.04 only shink log file

        
exec (
            
'
                declare @dn varchar(200);
                declare @ln varchar(210);
                select @dn = name from  
'+@DbName+' .dbo.sysfiles where fileid=1 
                select @ln = name from  
'+@DbName+' .dbo.sysfiles where fileid=2 
                use [
'+ @DbName + '] backup log ['+ @DbName +' ] with no_log dbcc shrinkfile (@ln)
            
'
            )

-------02.04 shink db file & log file
    --  dbcc SHRINKDATABASE (@DbName)
        print @DbName + ' done'
      
FETCH NEXT FROM cur INTO @DbName
  
END
-----02.05 colse cursor
CLOSE  cur
DEALLOCATE  cur
-----03.drop temp table
DROP TABLE #DN
-------------------------------
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-01-05 08:24 温景良(Jason) Views( 226) Comments( 0) Edit 收藏
 

公告

 
本文转自 我的程序人生博客园博客,原文链接: http://www.cnblogs.com/wenjl520/archive/2009/01/05/1368657.html,如需转载请自行联系原作者
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值