删除SQL日志.单一MDF文件恢复.
2006-03-22 17:18
288 查看
怎么清除sql server日志 |
方法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_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不产生归档一样。 |
相关文章推荐
- 删除SQL日志.单一MDF文件恢复
- SQL只有MDF文件的恢复--SQL无日志LDF文件的恢复(图解)
- 只有.MDF 删除了.LDF日志文件的恢复方法
- log view for sql server (一款通过解析MSSql2008日志文件恢复表数据删除的工具软件)
- SQL日志文件丢失,只有MDF恢复
- SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件
- 误删除了SQL日志(.ldf)文件的恢复技术
- SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件?
- SQL的日志文件丢失,只有MDF文件,怎么把数据恢复
- SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件
- SQL2005恢复只有mdf文件的数据库
- SQL2005恢复只有mdf文件的数据库
- SQL Server 2005 如何在没有日志文件的情况下如何恢复MDF数据库文件(测试通过)
- linux服务器入侵后日志文件删除/恢复方法
- Sql server MDF数据文件的恢复操作[]
- SQL2005恢复只有mdf文件的数据库
- 当恢复sqlserver bak文件时,原始的用户无法删除的解决方法
- 没有日志,只有MDF文件如何恢复数据库(转)[
- SQL Server数据库备份恢复-拷贝数据库文件mdf和日志文件ldf
- 在SQL SERVER2005下,如何在没有日志文件的情况下如何恢复MDF数据库文件(测试通过)