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

推荐订阅源

D
Docker
F
Fortinet All Blogs
爱范儿
爱范儿
博客园 - Franky
MyScale Blog
MyScale Blog
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
B
Blog
P
Proofpoint News Feed
IT之家
IT之家
宝玉的分享
宝玉的分享
D
DataBreaches.Net
S
SegmentFault 最新的问题
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
M
MIT News - Artificial intelligence
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
量子位
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - 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