SqlServer数据库压缩-日志压缩
- 格式:docx
- 大小:14.07 KB
- 文档页数:1


SQLSERVER压缩语句SQLSERVER压缩语句压缩⼀条数据库语句如下:CREATE Procedure [dbo].[sp_Compress]ASBEGINDECLARE @db_name varchar(200)set @db_name='dangjiae' --数据库名DUMP TRANSACTION @db_name WITH NO_LOGBACKUP LOG @db_name WITH NO_LOGDBCC SHRINKDATABASE(@db_name)END--01.get all database nameSELECT DBNAME =DB_NAME(s_mf.database_id) INTO #DN FROMsys.master_files s_mfWHEREs_mf.state =0and-- ONLINEHAS_DBACCESS(DB_NAME(s_mf.database_id)) =1-- Only look at databases to which we have access GROUP BY s_mf.database_idORDER BY1e cursor to fetch db name-----02.01 declare cursorDECLARE cur CURSOR FORSELECT DBNAME FROM #DN-----02.02 open cursor & declare varOPEN curDECLARE@DbName VARCHAR(200)-----02.03 loop db baneFETCH NEXT FROM cur into@DbNameWHILE(@@FETCH_STATUS=0)BEGINprint'shrinking '+@DbName+' ...'-------02.04 only shink log fileexec('declare @dn varchar(200);declare @ln varchar(210);select @dn = name from '+@DbName+'.dbo.sysfiles where fileid=1select @ln = name from '+@DbName+'.dbo.sysfiles where fileid=2use ['+@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@DbNameEND-----02.05 colse cursorCLOSE curDEALLOCATE cur-----03.drop temp tableDROP TABLE #DN-------------------------------测试服务器的sql和⼀志经常就太⼀了,写⼀个存储过程,然后job定期执⼀,避免磁盘空间浪费。
让知识带有温度。
关于SQLServer压缩日志及数据库文件大小整理
关于SQL Server压缩日志及数据库文件大小
请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.
一般不建议做第4,6两步,第4步担心全,有可能损坏数据库或丢失数据。
第6步假如日志达到上限,则以后的数据库处理睬失败,在清理日志后才能恢复。
1.清空日志
DUMP TRANSACTION 库名WITH NO_LOG
2.截断事务日志
BACKUP LOG 数据库名WITH NO_LOG
3.收缩数据库文件(假如不压缩,数据库的'文件不会减小
企业管理器--右键你要压缩的数据库--全部任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
第1页/共2页
千里之行,始于足下。
--收缩数据库
DBCC SHRINKDATABASE(客户资料)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:
select * from sysfiles
DBCC SHRINKFILE(1)
4.为了最大化的缩小日志文件(假如是sql 7.0,这步只能在查询分析器中进行)
a.分别数据库:
企业管理器--服务器--数据库--右键--分别数据库
b.在我的电脑中删除LOG文件
文档内容到此结束,欢迎大家下载、修改、丰富并分享给更多有需要的人。
第2页/共2页。
sqlserver2008数据库⽇志⽂件压缩截断⽅法SQL Server 2008下⽇志清理⽅法2011-05-03 17:12每次看到暴涨的数据库⽇志就有些头⼤,于是乱搜⼀通找个办法把⽇志⼲掉,下次⼜头⼤,⼜搜半天,于是还是写篇blog,不⽤乱找了。
1.将数据库设置成简单模式选择要收缩的数据库,点右键属性->选项,选择简单模式2.选择任务->收缩->⽂件3.选择⽇志或者⽤如下语句代码USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLEGOUSE DNNameGODBCC SHRINKFILE (N'LogFileName' , 0,TRUNCATEONLY)GOUSE [master]GOALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY FULLGOServer 2000要清理使⽤的是dump语句,但是在SQL ⾥,这个语句不管⽤了,如果⽇志⽂件很⼤,⽐如超过1G,就需要截断⼀下⽇志⽂件以加快sqlserver的运⾏速度,在SQL Server2008⾥,⽅法改为:有数据库 xxdb 在 SQL Server 2008 下,⽇志⽂件已经超过1G。
以往使⽤BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断⽇志语句已经变为了 “BACKUP LOG 语句不指定 WITH COPY_ONLY”使⽤语句 BACKUP LOG xxdb to disk='x:\work\1.bak' 将⽇志⽂件备份,并截断⽇志⽂件。
sql server 压缩数据库方法在SQL Server 中,可以使用几种方法来压缩数据库。
以下是其中一些方法:1. 使用 T-SQL 脚本:可以使用 T-SQL 脚本来压缩数据库。
例如,使用 `ALTER DATABASE` 语句和 `REBUILD_LOG` 或 `REBUILD_FILE` 子句来压缩数据库日志和文件。
```sql-- 压缩日志文件ALTER DATABASE [YourDatabaseName]REBUILD_LOG;-- 压缩数据文件ALTER DATABASE [YourDatabaseName]REBUILD_FILE (N'LogicalFileName', N'NewFileName', 1);```2. 使用 SQL Server Management Studio (SSMS):在 SQL Server Management Studio 中,你可以右击数据库 -> 任务 -> 收缩 -> 文件或文件组。
这将打开一个对话框,你可以选择收缩数据库的方法和设置。
3. 使用 ALTER DATABASE 语句:你可以使用 ALTER DATABASE 语句来设置数据库的自动收缩选项。
例如:```sqlALTER DATABASE [YourDatabaseName]SET AUTO_SHRINK ON;```请注意,自动收缩通常不是一个好的做法,因为它可能会影响性能并导致大量的日志操作。
4. 使用第三方工具:市场上有很多第三方工具,如 Redgate's SQL Compact,可以帮助你更有效地压缩数据库。
这些工具通常提供更高级的压缩选项和更好的性能。
5. 优化数据库设计:在某些情况下,压缩数据库可能不是一个解决方案。
例如,如果数据库太大,可能需要重新考虑数据库设计,例如通过规范化、反规范化、分区或使用其他技术来减少数据库的大小。