SQL Server 2000/2005/2008删除或压缩数据库日志的方法

由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间。由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除。

网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法。这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志的不同之处,颇有帮助。同时,该方法的效率很高,收缩600G的日志到10M只花了不到30秒。

最后附上代码:

适用于SQL Server 2000的方法

DUMP TRANSACTION [jb51] WITH NO_LOG
BACKUP LOG [jb51] WITH NO_LOG
DBCC SHRINKDATABASE([jb51])

其中jb51为数据库名

适用于SQL Server 2005的方法

Backup Log [jb51] WITH no_log
GO
DUMP TRANSACTION [jb51] WITH no_log
GO
USE jb51
DBCC SHRINKFILE (2)
GO

说明:由于SQL Server 2008对文件和日志管理进行了优化,所以以上语句在SQL2005中可以运行但在SQL2008中已经被取消。

USE[master]
GO
ALTER DATABASE jb51 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE jb51 SET RECOVERY SIMPLE --简单模式
GO
USE jb51
GO
DBCC SHRINKFILE (N'DNName_Log', 11, TRUNCATEONLY)

GO

USE[master]
GO
ALTER DATABASE jb51 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE jb51 SET RECOVERY FULL --还原为完全模式
GO

其中jb51为数据库名,DNName_Log为日志名,需要找一下,具体的说明可以参考这篇文章,也有图文方法 https://www.jb51.net/article/136523.htm

这篇文章就介绍到这了,需要的朋友可以参考一下,希望大家以后多多支持我们。

(0)

相关推荐

  • sqlserver 数据库压缩与数据库日志(ldf)压缩方法分享

    Access 操作很简单,具体不步骤如下:打开你mdb数据库,工具-->数据库实用工具-->压缩和修复数据库(c)... SQL SERVER 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1.设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQLServer-->SQLServer组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数

  • 自动备份mssql server数据库并压缩的批处理脚本

    1. set bakupfolder=F:\backup\ 备份文件存放于目录F:\backup\ (此目录需要事先建好) 2. 默认每个数据库放置到bakupfolder下的同名的子目录(脚本自动创建)中:设置lay_in_subfolder=0后,将直接放置到bakupfolder 3. 备份文件名中自动添加备份时的时间字符串,不用担心备份目录下名字重复,也便于管理. 4. call :backupone foo foo是需要备份的数据库,需要备份其它数据库,按同样的方式一行写一条即可 5.

  • MS SQL SERVER 数据库日志压缩方法与代码

    MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的增长可以达到好几百M. 网上的MSSQL虚拟主机价格也贵,要想不让数据库超容,只好压缩下数据库日志,或者删除数据库日志. 下面我给大家介绍一个方法 1.打开企业管理器 2.打开要处理的数据库 3.点击菜单>工具>SQL查询分析器 4.在输入窗口里面输入: 复制代码 代码如下: DUMP TRANSACTION [数据库名] WITH  NO_LOG  BACKUP 

  • DBCC SHRINKDATABASEMS SQL数据库日志压缩方法

    MS SQL数据库日志压缩方法 MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的增长可以达到好几百M. 网上的MSSQL虚拟主机价格也贵,要想不让数据库超容,只好压缩下数据库日志,或者删除数据库日志. 下面我给大家介绍一个方法 1.打开企业管理器 2.打开要处理的数据库 3.点击菜单>工具>SQL查询分析器 4.在输入窗口里面输入: DUMP TRANSACTION [数据库名] WITH NO_LOG BACK

  • sql server 2008 压缩备份数据库(20g)

    今天需要把一个省外项目的数据库从服务器上备份.拷贝到本机(跨地域传输数据库备份文件). 连上VPN,通过远程桌面连接,连接上服务器,发现数据库文件已经有20G以上大小了. 文件太大,公司网络也不稳定,根本不可能通过网络传输过来. 于是,把数据库的恢复模式由"完整"模式设置为"简单"模式,接着收缩数据库, 数据库瞬间由20G变成1G多点. 在SSMS中,新建查询窗口,执行数据库备份语句: --定义变量,把备份数据库的QL脚本赋值给变量 declare @SqlBack

  • ms SQL server数据库备份、压缩与SQL数据库数据处理的方法

    一.备份数据库 1.打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server 2.SQL Server组-->双击打开你的服务器-->双击打开数据库目录 3.选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库 4.备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份 二.还原

  • 在程序中压缩sql server2000的数据库备份文件的代码

    怎样压缩sql server2000的数据库备份文件,像rar一样?小弟有一7m的sql server2000 数据库备份文件,在程序中怎样压缩啊? 复制代码 代码如下: procedure TForm1.Button2Click(Sender: TObject);  var    SHExecInfo: SHELLEXECUTEINFO;  begin   SHExecInfo.cbSize := sizeof(SHELLEXECUTEINFO);    SHExecInfo.fMask :=

  • mysql数据库备份命令分享(mysql压缩数据库备份)

    备份MySQL数据库的命令 复制代码 代码如下: mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库. 复制代码 代码如下: mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile

  • sql server通过脚本进行数据库压缩全备份的方法【推荐】

    问题: 生产环境的数据库可能比较大,如果直接进行全备而不压缩的话,备份集就会占用了大量磁盘空间.给备份文件的存放管理带来不便. 解决方案: 通过with compression显式启用备份压缩,指定对此备份执行备份压缩,覆盖服务器级默认设置.适用于 SQL Server 2008和更高版本. 因为相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备 I/O 通常较少,因此通常可大大提高备份速度. 脚本: /* 说明:手动修改[DB名称].要备份到的[路径和文件名],再执行脚本 脚本来源:h

  • SQL Server 2000/2005/2008删除或压缩数据库日志的方法

    由 于数据库日志增长被设置为"无限制",所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除. 网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法.这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志的不同之处,颇有帮助.同

  • sql server 2000阻塞和死锁问题的查看与解决方法

    数据库发生阻塞和死锁的现象: 一.数据库阻塞的现象:第一个连接占有资源没有释放,而第二个连接需要获取这个资源.如果第一个连接没有提交或者回滚,第二个连接会一直等待下去,直到第一个连接释放该资源为止.对于阻塞,数据库无法处理,所以对数据库操作要及时地提交或者回滚.二.数据库死锁的现象:第一个连接占有资源没有释放,准备获取第二个连接所占用的资源,而第二个连接占有资源没有释放,准备获取第一个连接所占用的资源.这种互相占有对方需要获取的资源的现象叫做死锁.对于死锁,数据库处理方法:牺牲一个连接,保证另外

  • SQL Server中聚合历史备份信息对比数据库增长的方法

    很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式. 通常来讲,一个运维良好的数据库都需要做定期基线(baseline),有了基线才会知道什么是正常.一个简单的例子例如,一些人的血压平常偏低,那么80的低压对他来说就是不正常了.但现实情况是大多数系统并没有采集基线的习惯,因此在需要规划空间想要看历史增长时,就没有过去精确的数据了. 一个解决办法就是通过查看历史备份的大小来看过

  • 如何恢复SQL Server 2000损坏的数据库文件

    SQL Server2000中,如果数据库文件(非系统数据库文件)遇到错误的时候,我们该怎么办.以下是笔者以前的笔记.仅适用于非master,msdb的数据库. 说明如下: 1 建一个测试数据库test(数据库类型为完全)2 建一个表,插入点记录 create table a(c1 varchar(2))goinsert into a values('aa')goinsert into a values('bb')go 3 作完全备份,到文件test_1.bak4 在作一点修改 insert i

  • SQL Server 2000向SQL Server 2008 R2推送数据图文教程

    最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他"服务器"向我们服务器推送的方式实现.我们服务器使用的是sql server 2008 R2,其他"服务器"使用的都是SQL Server 2000,还都是运行在Windows XP上的,整个过程遇到了一些问题,也参考了一些文档,最终费了好多事才算搞定. [一.配置分发服务器] SQLServer 2000的复制服务包括三个角色:发布服务器.分发服务器和订阅服务器,关系如图1所示. 图1 其中

  • Sql Server 2000删除数据库备份文件

    复制代码 代码如下: /************************* Sql Server 2000 如何删除数据库备份 **************************/ --可以先备份数据库[TestDB] BACKUP DATABASE TestDB TO Disk ='E:\数据库备份\TestDB_20090829.bak' WITH INIT; go --添加备份数据库的逻辑变量名[testdbbk] sp_addumpdevice 'disk', 'testdbbk',

  • 重装MS SQL Server 2000前必须彻底删除原安装文件的方法

    重装MS SQL Server 2000一般需要彻底删除原安装文件,以前总是无法重新安装,默认被占了,现在网上看到了特用如下方法对付安装挂起问题:  1.在开始->运行中输入regedit  2.到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置  3.选择文件->导出,保存(安全起见)  4.在右边窗口右击PendingFileRenameOperations,选择删除,然后确认

  • SQL Server 2005 数据库转 SQL Server 2000的方法小结

    今天有朋友推荐个活就是把Sql Server 2005的数据库转到Sql Server 2000里,但实际操作起来遇到的问题还不少,网上搜了一些办法,在此陈列出来,并把我使用时遇到的问题及解决方案一并记录下来,以备后期查阅 前几步和网上说的一样,先生成2000的脚本,然后再到2000里面执行.操作如下: 打开 SQL Server 2005 的Manger Studio -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例 找到你要转换的数据库(建议先将此数据库里的登录名清

  • SQL Server误区30日谈 第13天 在SQL Server 2000兼容模式下不能使用DMV

    误区 #13.在SQL Server 2000兼容模式下不能使用DMV 错误       对于兼容模式已经存在了很多误解.80的兼容模式的数据库是否意味着能够附加或恢复到SQL Server 2000数据库?当然不是.这只是意味着一些T-SQL的语法,查询计划的行为以及一些其它方面和SQL Server 2000中行为一样(当然,如果你设置成90兼容模式则和SQL Server 2005中一样). 在SQL Server 2008中,你可以使用ALTER DATABASE SET COMPATI

  • SQL Server 2000 注入防护大全(二)

    SQL Server 2000 注入防护大全(二) 传统查询构造:select * FROM news where id=... AND topic=... AND .....admin'and 1=(select count(*) from [user] where username='victim' and right(left(userpass,01),1)='1') and userpass <>'select 123;--;use master;--:a' or name like

随机推荐