当前位置:  数据库>sqlserver

清空SQL Server日志的方法

    来源: 互联网  发布时间:2014-08-29

    本文导语:  清空sql server日志的方法 在查询分析器中顺序执行以下三步,其中 databasename 为你的数据库文件名。 1.清空日志:DUMP   TRANSACTION   databasename   WITH   NO_LOG  2.截断事务日志:BACKUP   LOG   databasename   WITH   NO_LOG  3.收缩...

清空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 
但我还是希望能找到不产生log的方法。就如oracle不产生归档一样。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 flush():清空缓冲区
  • 在线等待:如何把vector清空,再用该清空vector是,索引是从0开始,而不是紧接着上次清空是的索引?
  • C++ Bitsets 成员 reset():清空所有位
  • [文件 重定向 清空] Linux 清空文件问题
  • C++ Vectors 成员 clear():清空所有元素
  • java开源软件 iis7站长之家
  • JSP中清空cookie代码参考
  • C#清空添加的txt文件的实例代码
  • JSP 重置按钮清空传入的表单数据实例
  • unix下用c如何清空一个文件?
  • linux 下清空串口发送接收缓冲区的函数.
  • linux 能否清空文件缓存?
  • jquery清空textarea等输入框中内容的代码
  • 请问,下拉框怎样来清空,?
  • 如何清空键盘缓冲区?
  • 如何将一个文本文件在写入前先清空?急待回答。代码如下:
  • 在JSP中如何从内存中清空APPLICATION,
  • 怎样清空vector中的内容??急
  • 如何清空所有SESSION
  • 如何清空session变量的值,或者删除一个session变量
  • 请问如何清空JTextArea中的内容?100分马上送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3