文件MSSQL清理LOG文件:把旧日志文件合理分配
在MSSQL中,日志文件是用于记录各种事务数据库操作步骤,和异常活动事件的一种重要文件。它包含了每一次数据库操作的详细信息,当某些数据库操作出现问题的时候,这些记录就可以日志文件来帮助定位并解决问题。
由于日志文件随着日常数据库操作的持续增加,最终会消耗掉可用的空间,会引发文件大小超出限制的问题,因此有必要对日志文件合理地开展分配操作。
要进行文件MSSQL日志文件的清理和分配,我们需要用到下面两个操作:
1、用DBCC Shrikfile函数释放空间:通过将其删除无效页,而不是释放空间。这只能清理掉由于内容被删除、无效数据库页面或格式错误等原因产生的空间,而不会释放多余的空间。具体操作如下:
DBCC Shrinkfile(mslog, 10);

这里的mslog代表日志文件的名称,10代表文件的大小,比给定的值小的最小值。
2、使用DBCC SHRINK>香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
如何将同一目录下的多个日志文件清空
展开全部1在当前目录下,键入如下命令:For i in `find . -name *`; do cat /dev/null >$i; done2执行完毕后,当前目录下的所有log日志文件就被清空了。 Linux:批量清空当前目录下的日志文件3再把shell命令解释一下:find . -name *,就是在当前目录下查找后缀为log的文件。 cat /dev/null >$i ,就是将每次找到的log文件清空。
SQL的日志文件如何删除???
1.自动清除法开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。 此方法的优点是无须人工干预,由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。 2.手动清除法执行命令“dump transaction”来清除Log。 以下两条命令都可以清除日志:dump transaction with truncate_only dump transaction with no_log
sql server 2005 工作日志如何清理?
方法1:第一步:backup log database_name with no_log或者 backup log database_name with truncate_only --no_log和truncate_only是在这里是同义的,随便执行哪一句都可以第二步:1.收缩特定数据库的所有数据和日志文件,执行 dbcc shrinkdatabase (database_name,[,target_percent])--database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比2.收缩一次一个特定数据库中的数据或日志文件,执行 dbcc shrinkfile(file_id,[,target_size]) --file_id是要收缩的文件的标识 (ID) 号,若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。 如果没有指定,dbcc shrinkfile 将文件大小减少到默认文件大小两个dbcc都可以带上参数notruncate或truncateonly,具体意思看帮助。 方法2(这个方法在sqlserver2000的环境下做一般能成功,在sqlserver7及以下版本就不一定了):第一步:先备份整个数据库以备不测第二步:备份结束后,在Query Analyzer中执行如下的语句:exec sp_detach_db yourDBName,true --卸除这个DB在MSSQL中的注册信息第三步:到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录第四步:在Query Analyzer中执行如下的语句:exec sp_attach_single_file_db yourDBName,d:\mssql7\data\yourDBName_--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。 以上方法在清除log日志中均有效。 但,能否让sql server 不产生log日志呢?以上方法好像均无效。 我这儿正好有个case:我客户的sql server每天都会产生4,500M的log日志,每天都清除一下,非常不便。 有没有办法实现不产生log日志呢?我分析了一下客户产生log日志的原因,并且做了相应测试。 客户是每天将数据库清空,从总系统中将数据导入到sql server里。 我感决sqlserver在插入时产生log不大,在delete整个库时产生log极大。 比如:SELECT * into test_2 from b_bgxx共条记录,产生十几M log,如果delete from test_2产生80多M log ,这明显存在问题。 虽然可以换成:truncate table test_2但我还是希望能找到不产生log的方法。 就如Oracle不产生归档一样。
发表评论