控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

SQL Server日志清空方法

作者:佚名 出处:互联网 2011年09月09日 阅读:

SQL Server日志清空方法
 
在查询分析器中顺序执行以下三步,其中   databasename   为你的数据库文件名
1.清空日志:DUMP   TRANSACTION   databasename   WITH   NO_LOG  

2.截断事务日志:BACKUP   LOG   databasename   WITH   NO_LOG  

3.收缩数据库:DBCC   SHRINKDATABASE(databasename)  


--//////////////////////////////////////////////////////////////////

SQL   Server日志清空方法  
   
一种方法:清空日志。  
1.打开查询分析器,输入命令   DUMP   TRANSACTION   数据库名   WITH   NO_LOG  
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

方法二:

清空日志:

------------------------------------------
  BACKUP   LOG     库名   WITH   NO_LOG

  DBCC   SHRINKFILE(   '日志文件名 ',新的大小数值型如1)

日志文件名是这样的:

select   name   from   sysfiles
如:
mastlog

---------------------------------------------
backup   log     DATABASENAME
  with   truncate_only
  dbcc   shrinkdatabase   (DATABASENAME,SIZE)  
  若每天有whole   back   up   的话可以设置一job,
  每隔三天或一个星期清空一次
  这样的话日志就不会长大了哦


-------------------------------------
1:   删除LOG
1:分离数据库
2:删除LOG文件
3:附加数据库
此法生成新的LOG,大小只有500多K
      再将此数据库设置自动收缩
2:清空日志
DUMP     TRANSACTION     库名     WITH     NO_LOG        

再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

方法三:  
第一步:  
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,具体意思看帮助。  


方法四:  
(这个方法在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_data.mdf '  
--以单文件的方式注册该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  
共45000条记录,产生十几M   log,如果  
delete   from   test_2  
产生80多M   log   ,这明显存在问题。  

虽然可以换成:  
truncate   table   test_2  

 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统