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
-------------------------------
posted @   温景良(Jason)  Views(408)  Comments(0Edit  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示