惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
T
Tailwind CSS Blog
V
Visual Studio Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
量子位
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
Jina AI
Jina AI
雷峰网
雷峰网
博客园 - 【当耐特】
博客园 - 叶小钗
美团技术团队
宝玉的分享
宝玉的分享
IT之家
IT之家

博客园 - simplay

Virtual PC 2007 SP1 中,Windows Server 2008 SP2 下安装 SQL Server 2008 R2 word 模板 设计 + 报表 + 打印 怪:安装matlab2009a,启动时出现应用程序初始化失败 驾校无纸化考试系统-破解 自定义Linq的Distinct 无法加载 DLL“mclmcrrt711.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 %commondir%\dte80.olb, %commondir%\dte80a.olb %CommonDir%\vslangproj2.olb 未能加载 - simplay 批处理自动更改IP地址 - simplay - 博客园 修改 Map Area Tip 样式 SQL SERVER 2005 数据库对比工具,并自动生成更新SQL脚本 清除SQL2005 表中字段说明属性 温廓线 SQL Server2005 数据库发布向导(Database Publishing Wizard) 正则解析HTML中的IMG中的图片地址 IFRAME 自适应高度 IE无法打开链接解决方法 Office 2003正版验证破解方法 告别SharePoint未知错误 - simplay - 博客园 解决XP的IIS "HTTP 500”内部服务器错误
SQL SERVER 2005 批量收缩数据库
simplay · 2009-12-17 · via 博客园 - simplay

由于在生产环境中数据库很多,又缺乏管理,导致数据库日志不断增加,且磁盘空间逐渐减少,手动收缩又太麻烦,写个脚本批量执行下:

代码

DECLARE @sql VARCHAR(max)
DECLARE @sqllog VARCHAR(max)
DECLARE @dbNAME VARCHAR(max)
DECLARE myCURSOR CURSOR FOR 
    
SELECT 'use '+ NAME +' DUMP TRANSACTION '+NAME +' WITH NO_LOG',NAME  FROM sys.databases
OPEN myCURSOR              
FETCH NEXT FROM myCURSOR  INTO @sql ,@dbNAME
WHILE(@@FETCH_status=0)  
BEGIN
    
BEGIN TRY
        
EXEC(@sql)
        
SET @sqllog='use '+@dbNAME + ' DECLARE @NAME VARCHAR(50) 
                  SELECT @NAME=NAME FROM sys.sysfiles where groupid=0 
                DBCC SHRINKFILE (@NAME, 0, TRUNCATEONLY) 
'
        
EXEC(@sqllog)
        
SET @sqllog='use '+@dbNAME + ' DECLARE @NAME VARCHAR(50) 
                  SELECT @NAME=NAME FROM sys.sysfiles where groupid=1 
                DBCC SHRINKFILE (@NAME, 0, TRUNCATEONLY) 
'
        
EXEC(@sqllog)
    
END TRY
    
BEGIN CATCH
        
PRINT 'ERROR'
    
END CATCH;
    
FETCH NEXT FROM myCURSOR INTO @sql,@dbNAME
END
CLOSE myCURSOR 
deallocate myCURSOR