《2022年删除SQL日志方法共享 .pdf》由会员分享,可在线阅读,更多相关《2022年删除SQL日志方法共享 .pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、删除 SQL日志方法1打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG 2. 再打开企业管理器- 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件 -选择日志文件 - 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数, 直接输入这个数 , 确定就可以了。清除 Log 有两种方法:1. 自动清除法开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由 SQL Server 自动执行, 并且一般不会出现Log 溢满的情况;缺点是只清除Log 而不做备份。2.
2、 手动清除法执行命令“ dump transaction”来清除Log。以下两条命令都可以清除日志:dump transaction with truncate_only dump transaction with no_log 通常删除事务日志中不活跃的部分可使用“dump transaction with trancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE 提供“dump transaction with no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQL Server会弹出一条警告信息。为了尽量确保数据库的一致性,你应将
3、它作为“最后一招”。以上两种方法只?清除日志,而不做日志备份,若想备份日志,应执行“dump transaction database_name to dumpdevice”命令。PS:附一个更好的方法先分离数据库后,直接删除日志以后, 再在查询分析器里用exec sp_attach_single_file_db 数据库名 , .mdf文件路径 命令附加数据库。 OVER.在别的地方看到的不错。数据库日志操作先提供一种复杂的方法压缩日志及数据库文件如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
4、 - - - 第 1 页,共 25 页 - - - - - - - - - 1. 清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2. 截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG 3. 收缩数据库文件( 如果不压缩 , 数据库的文件不会减小企业管理器 - 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件 - 选择日志文件- 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小 M数, 直接输入这个数, 确定就可以了 - 选择数据文件- 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小 M数, 直接输入这个数
5、, 确定就可以了也可以用SQL语句来完成 - 收缩数据库 DBCC SHRINKDATABASE(客户资料 ) - 收缩指定数据文件,1 是文件号 , 可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4. 为了最大化的缩小日志文件(如果是 sql 7.0,这步只能在查询分析器中进行) a. 分离数据库 : 企业管理器 - 服务器 - 数据库 - 右键 - 分离数据库 b. 在我的电脑中删除LOG文件 c. 附加数据库 : 企业管理器 - 服务器 - 数据库 - 右键 - 附加数据库此法将生成新的LOG ,大小只有500 多 K 或用代
6、码:下面的示例分离 pubs ,然后将 pubs 中的一个文件附加到当前服务器。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 25 页 - - - - - - - - - a. 分离 E X E C sp_detach_db dbname = pubs b. 删除日志文件 c. 再附加 E X E C sp_attach_single_file_db dbname = pubs, physname = c:Program FilesMicrosoft SQL Serve
7、rMSSQLDatapubs.mdf 5. 为了以后能自动收缩, 做如下设置 : 企业管理器 - 服务器 - 右键数据库 - 属性 - 选项 - 选择 自动收缩 -SQL 语句设置方式: E X E C sp_dboption 数据库名 , autoshrink, TRUE 6. 如果想以后不让它日志增长得太大企业管理器 - 服务器 - 右键数据库 - 属性 - 事务日志 - 将文件增长限制为xM(x 是你允许的最大数据文件大小) -SQL 语句的设置方式: alter database 数据库名 modify file(name=逻辑文件名 ,maxsize=20) 特别注意:请按步骤进行,
8、 未进行前面的步骤, 请不要做后面的步骤否则可能损坏你的数据库. 一般不建议做第4,6 两步第 4 步不安全 , 有可能损坏数据库或丢失数据第 6 步如果日志达到上限, 则以后的数据库处理会失败, 在清理日志后才能恢复. 另外提供一种更简单的方法,本人屡试不爽,建议大家使用。更简单的方法:1。右建数据库属性窗口- 故障还原模型 - 设为简单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 25 页 - - - - - - - - - 2。右建数据库所有任务- 收缩数据库3。
9、右建数据库属性窗口- 故障还原模型 - 设为大容量日志记录可能有不少朋友遇到过这样的问题:update 或 delete语句忘带了where 子句,或 where 子句精度不够, 执行之后造成了严重的后果,这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的SQL没有进行相应的全库备份或不能备份日志(truncate log on checkpoint选项为 1),那么就无法进行数据的恢复了,或者只能恢复到最近一次的备份的数据了。以下简单说明恢复数据方法:1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进进行一次日志备份(如果为了不让日志文件变大而置
10、trunc. log on chkpt.选项为 1 那你就死翘了)backup log dbName to disk=fileName 2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢复restore database dbName from disk=fileName with norecovery 3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻restore log dbName from disk=fileName withstopat=date_time 以上这些操作都可以在SQL SERVER 企业管理
11、器里完成,难度不大。日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 25 页 - - - - - - - - - 2. 再打开企业管理器- 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件 -选择日志文件 - 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数, 直接输入这个
12、数 , 确定就可以了。另一种方法有一定的风险性,因为SQL SERVER 的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1: 删除 LOG 分离数据库企业管理器服务器数据库右键分离数据库2:删除 LOG文件附加数据库企业管理器服务器数据库右键附加数据库此法生成新的LOG ,大小只有500 多 K。注意:建议使用第一种方法。如果以后 ,不想要它变大。SQL2000下使用:在数据库上点右键-属性 - 选项 - 故障恢复 - 模型 - 选择 - 简单模型。或用 SQL语句:alter database 数据库名 set recovery simple 另外, Truncate
13、log on checkpoint(此选项用于SQL7.0,SQL 2000 中即故障恢复模型选择为简单模型)当执行 CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True Auto shrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25% 时,系统将会自动缩减文件使其未用空间等于 25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为 True 时才能进行。注
14、意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。当然,如果误操作是一些不记日志的操作比如truncate table ,select into等操作,那么是无法利用上述方法来恢复数据的. 删除 SQL日志 1: 删除 LOG 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 25 页 - - - - - - - - - 1:分离数据库企业管理器服务器数据库右键分离数据库2:删除 LOG文
15、件3:附加数据库企业管理器服务器数据库右键附加数据库此法生成新的LOG ,大小只有520 多 K 再将此数据库设置自动收缩或用代码:下面的示例分离 77169database ,然后将 77169database 中的一个文件附加到当前服务器。EXEC sp_detach_db dbname = 77169database EXEC sp_attach_single_file_db dbname = 77169database, physname = c:Program FilesMicrosoft SQL ServerMSSQLData77169database.mdf 2: 清空日志DUM
16、P TRANSACTION 库名 WITH NO_LOG / DUMP TRANSACTION ulionmis WITH NO_LOG 再:企业管理器 - 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件 - 选择日志文件 - 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数, 直接输入这个数, 确定就可以了3: 如果想以后不让它增长企业管理器服务器数据库属性事务日志将文件增长限制为2M 自动收缩日志 , 也可以用下面这条语句Alter DATABASE 数据库名SET AUTO_SHRINK ON 故障还原模型改为简单, 用语句是USE MASTER 名师资料
17、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 25 页 - - - - - - - - - GO Alter DATABASE 数据库名 SET RECOVERY SIMPLE GO - 截断事务日志:BACKUP LOG database_name | database_name_var WITH NO_LOG | TRUNCATE_ONLY - 压缩日志及数据库文件大小/*-特别注意请按步骤进行 , 未进行前面的步骤, 请不要做后面的步骤否则可能损坏你的数据库. -*/ 1
18、. 清空日志DUMP TRANSACTION 库名 WITH NO_LOG 2. 截断事务日志:BACKUP LOG 数据库名 WITH NO_LOG 3. 收缩数据库文件( 如果不压缩 , 数据库的文件不会减小企业管理器 - 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件- 选择日志文件- 在收缩方式里选择收缩至XXM, 这里会给出一个允许收缩到的最小M数, 直接输入这个数, 确定就可以了名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 25 页 - -
19、- - - - - - - - 选择数据文件- 在收缩方式里选择收缩至XXM, 这里会给出一个允许收缩到的最小M数, 直接输入这个数, 确定就可以了也可以用SQL语句来完成- 收缩数据库DBCC SHRINKDATABASE(客户资料 ) - 收缩指定数据文件,1 是文件号 , 可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4. 为了最大化的缩小日志文件(如果是 sql 7.0,这步只能在查询分析器中进行) a. 分离数据库 : 企业管理器 - 服务器 - 数据库 - 右键 - 分离数据库b. 在我的电脑中删除LOG文件c. 附加数
20、据库 : 企业管理器 - 服务器 - 数据库 - 右键 - 附加数据库此法将生成新的LOG ,大小只有500 多 K 或用代码:下面的示例分离 77169database ,然后将 77169database 中的一个文件附加到当前服务器。a. 分离EXEC sp_detach_db dbname = 77169database b. 删除日志文件c. 再附加EXEC sp_attach_single_file_db dbname = 77169database, physname = c:Program FilesMicrosoft SQL ServerMSSQLData77169datab
21、ase.mdf 5. 为了以后能自动收缩, 做如下设置 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 25 页 - - - - - - - - - 企业管理器 - 服务器 - 右键数据库 - 属性 - 选项 - 选择 自动收缩 -SQL 语句设置方式 : EXEC sp_dboption 数据库名 , autoshrink, TRUE 6. 如果想以后不让它日志增长得太大企业管理器 - 服务器 - 右键数据库 - 属性 - 事务日志- 将文件增长限制为xM(x 是你
22、允许的最大数据文件大小) -SQL 语句的设置方式: alter database 数据库名 modify file(name=逻辑文件名 ,maxsize=20) - /*-压缩数据库的通用存储过程压缩日志及数据库文件大小因为要对数据库进行分离处理所以存储过程不能创建在被压缩的数据库中-*/ /*-调用示例execp_compdb test -*/ use master -注意 ,此存储过程要建在master 数据库中go if exists (select * from dbo.sysobjects where id = object_id(Ndbo.p_compdb) and OBJEC
23、TPROPERTY(id, NIsProcedure) = 1) drop procedure dbo.p_compdb GO createprocp_compdb 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 25 页 - - - - - - - - - dbnamesysname, - 要压缩的数据库名bkdatabase bit=1, -因为分离日志的步骤中, 可能会损坏数据库, 所以你可以选择是否自动数据库bkfnamenvarchar(260)= -备份的文件
24、名, 如果不指定 , 自动备份到默认备份目录,备份文件名为 : 数据库名 +日期时间as -1. 清空日志exec(DUMP TRANSACTION +dbname+ WITH NO_LOG) -2. 截断事务日志:exec(BACKUP LOG +dbname+ WITH NO_LOG) -3. 收缩数据库文件( 如果不压缩 , 数据库的文件不会减小exec(DBCC SHRINKDATABASE(+dbname+) -4. 设置自动收缩exec(EXEC sp_dboption +dbname+,autoshrink,TRUE) - 后面的步骤有一定危险, 你可以可以选择是否应该这些步骤-
25、5. 分离数据库if bkdatabase=1 begin ifisnull(bkfname,)= set bkfname=dbname+_+convert(varchar,getdate(),112) +replace(convert(varchar,getdate(),108),:,) select 提示信息 = 备份数据库到SQL 默认备份目录, 备份文件名 :+bkfname exec(backup database +dbname+ to disk=+bkfname+) end - 进行分离处理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
26、- - - - - - 名师精心整理 - - - - - - - 第 10 页,共 25 页 - - - - - - - - - create table #t(fnamenvarchar(260),type int) exec(insert into #t select filename,type=status&0 x40 from +dbname+.sysfiles) exec(sp_detach_db +dbname+) - 删除日志文件declare fnamenvarchar(260),s varchar(8000) declaretb cursor local for select
27、 fname from #t where type=64 opentb fetch next from tb into fname while fetch_status=0 begin set s=del +rtrim(fname)+ exec master.xp_cmdshell s,no_output fetch next from tb into fname end closetb deallocatetb - 附加数据库set s= declaretb cursor local for select fname from #t where type=0 opentb fetch nex
28、t from tb into fname while fetch_status=0 begin 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 25 页 - - - - - - - - - set s=s+,+rtrim(fname)+ fetch next from tb into fname end closetb deallocatetb exec(sp_attach_single_file_db +dbname+s) go 日志文件满而造成SQL数据库无法写入文
29、件时,可用两种方法:一种方法:清空日志。1打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG 2. 再打开企业管理器- 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件 -选择日志文件 - 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数, 直接输入这个数 , 确定就可以了。另一种方法有一定的风险性,因为SQL SERVER 的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1: 删除 LOG 分离数据库企业管理器服务器数据库右键分离数据库2:删除 LOG文件附加数据库企业管理器服务器数据库右键附加数据库此
30、法生成新的LOG ,大小只有500 多 K。注意:建议使用第一种方法。如果以后 ,不想要它变大。SQL2000下使用:在数据库上点右键-属性 - 选项 - 故障恢复 - 模型 - 选择 - 简单模型。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 25 页 - - - - - - - - - 或用 SQL语句:alter database 数据库名 set recovery simple 另外, Truncate log on checkpoint(此选项用于SQL7.
31、0,SQL 2000 中即故障恢复模型选择为简单模型)当执行 CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True Auto shrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25% 时,系统将会自动缩减文件使其未用空间等于 25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为 True 时才能进行。注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使
32、数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。如何删除sql 2000日志2004 年 9 月 24 日 11:23 前几天也碰到日志文件过大的问题,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G! 试了多种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小。无论如何,这应该算SQL SERVER 的一个 BUG 吧。后来找到下面的代码,就可以将日志文件缩小到自己想要的大小了。把代码 COPY 到查询分析器里, , 然后修改其中的3 个参数 ( 数据库名, 日志文件名, 和目标
33、日志文件的大小) ,运行即可 (我已经用过多次了) - SET NOCOUNT ON DECLARE LogicalFileNamesysname, MaxMinutes INT, NewSize INT USE Marias - 要操作的数据库名Select LogicalFileName = Marias_log , - 日志文件名MaxMinutes = 10, - Limit on time allowed to wrap log. NewSize = 100 - 你想设定的日志文件的大小(M) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
34、- - - - - - 名师精心整理 - - - - - - - 第 13 页,共 25 页 - - - - - - - - - - Setup / initialize DECLARE OriginalSizeint Select OriginalSize = size FROM sysfiles Where name = LogicalFileName Select Original Size of + db_name() + LOG is + CONVERT(VARCHAR(30),OriginalSize) + 8K pages or + CONVERT(VARCHAR(30),(Or
35、iginalSize*8/1024) + MB FROM sysfiles Where name = LogicalFileName Create TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE Counter INT, StartTime DATETIME, TruncLog VARCHAR(255) Select StartTime = GETDATE(), TruncLog = BACKUP LOG + db_name() + WITH TRUNCATE_ONLYDBCC SHRINKFILE (LogicalFil
36、eName, NewSize) EXEC (TruncLog) - Wrap the log if necessary. WHILE MaxMinutes DATEDIFF (mi, StartTime, GETDATE() - time has not expired AND OriginalSize = (Select size FROM sysfiles Where name = LogicalFileName) AND (OriginalSize * 8 /1024) NewSize 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
37、- - - 名师精心整理 - - - - - - - 第 14 页,共 25 页 - - - - - - - - - BEGIN - Outer loop. Select Counter = 0 WHILE (Counter OriginalSize / 16) AND (Counter 分离数据库3、到数据库文件的存放目录,将MuOnline_log.LDF文件删除,你怕S的话可以拷出去名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 25 页 - - - - - -
38、- - - 4、 企业管理器 - 附加数据库, 选 muonline , 这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。5、记得数据库重新附加后用户要重新设置一下。以后如果新的日志文件变大了,再继续这个步骤就行了- 假设 test2为数据库名称在查询分析器中执行:backup log MuOnline with NO_LOG backup log MuOnline with TRUNCATE_ONLY DBCC SHRINKDATABASE(MuOnline) 将上面的语句多次执行,直到日志文件缩小。execsp_dbopti
39、onMuOnline,autoshrink,on 建立作业 ,每半个小时一次日志备份, 每天一次完全数据库备份。在 Log 收缩到正常大小后,将autoshrink选项设置为off 。查询分析器里运行: backup log MuOnlie with NO_LOG backup log MuOnlie with TRUNCATE_ONLY DBCC SHRINKDATABASE(MuOnlie) 关于 SQL的日志清理命令! 大家看看有没有用吧! BACKUP LOG MuOnline WITH NO_LOG DBCC SHRINKDATABASE(MuOnline,10) 这是清理MuOnl
40、ine 日志的千万点到MuOnline 再选查询分析器不然整理了其他数据库会出错的看看这个关于各种日志暴大的解决办法(3 种)关于各种日志暴大的解决办法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 25 页 - - - - - - - - - 要限制 sql 日志的大小很容易,只要选到那两个数据库(muonline 和 ranking )然后右键属性,在数据文件和事务日志里面就可以改关键是那个joinserver的日志,有时候很正常,一天下来顶多几十m ,有时候 1
41、分钟就能赏到4 个 G,其实要他不生成那么大的日志很简单,只要到joinserver的目录里面把log 那个目录删除或改名就可以了(我就是这么干的),一点都不影响使用,开 joinserver的时候它只会说write log error,对正常使用没有影响,这样joinserver目录就一直是700 多 k 了,哈哈对于 GS和其他的日志,因为都很小,所以就没改,个人认为其实也可以这么干的真正解决数据库日志大的方法首先在数据库属性里把按百分比增长从10改为 1,这样就大大限制了增长速度其次在每次重启服务器的时候,在查询器里执行下面的,这样的方法是我认为最安全也是最简单的,建议置顶感觉好用的朋友
42、顶了backup log MuOnline with NO_LOG backup log MuOnline with TRUNCATE_ONLY DBCC SHRINKDATABASE(MuOnline) 解决数据库日志大的方法、进入企业管理器,选中数据库,比如muonline 2、所有任务 - 分离数据库3、到数据库文件的存放目录,将MuOnline_log.LDF文件删除,你怕S的话可以拷出去4、 企业管理器 - 附加数据库, 选 muonline , 这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。5、记得数据库重新附加后
43、用户要重新设置一下推荐 数据库自动备份、缩小以及防止回档不要在属性里限制数据库大小,这样文件容量满的时候会出现回档建立作业,每天自动备份数据库,自动删除2 天前的备份名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 25 页 - - - - - - - - - 建立作业,每天运行一次以下代码,缩小日志文件backup log MuOnline with NO_LOG backup log MuOnline with TRUNCATE_ONLY DBCC SHRINKDAT
44、ABASE(MuOnline) 我就是这么做的,什么问题都没有,MU服务端全部用到的空间顶多2 个 G 日志可以这样减肥!右击 MuOnline ,所有任务,分离数据库然后到 D:Muserverdb 把那个 .log文件删掉你会发现MuOnline 数据库消失了右击一下,所有任务,点附加数据库路径指向D:Muserverdb 选中里面的 .mdf 你会发现日志有个大叉叉不管它,直接点确定。系统提示找不到日志,要不要新建一个新建一个就Ok了。这样减肥效果不错吧。解决方法日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1打开查询分析器,输入命令DUMP TRANSA
45、CTION 数据库名 WITH NO_LOG 2. 再打开企业管理器- 右键你要压缩的数据库- 所有任务 - 收缩数据库 - 收缩文件 -选择日志文件 - 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数, 直接输入这个数 , 确定就可以了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 25 页 - - - - - - - - - 另一种方法有一定的风险性,因为SQL SERVER 的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1
46、: 删除 LOG 分离数据库企业管理器服务器数据库右键分离数据库2:删除 LOG文件附加数据库企业管理器服务器数据库右键附加数据库此法生成新的LOG ,大小只有500 多 K。注意:建议使用第一种方法。如果以后 ,不想要它变大。SQL2000下使用:在数据库上点右键-属性 - 选项 - 故障恢复 - 模型 - 选择 - 简单模型。或用 SQL语句:alter database 数据库名 set recovery simple 另外,如上图中数据库属性有两个选项,与事务日志的增长有关:Truncate log on checkpoint(此选项用于SQL7.0,SQL 2000 中即故障恢复模型
47、选择为简单模型 ) 当执行 CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True Auto shrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25% 时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为 True 时才能进行。注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,
48、检查数据库的以上属性,以防事务日志再次充满。减少 SQL日志的方法- 一: 分享 解决 SQL日志增大的办 * 望置顶 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 25 页 - - - - - - - - - - 假设 test2为数据库名称在查询分析器中执行:backup log MuOnline with NO_LOG backup log MuOnline with TRUNCATE_ONLY DBCC SHRINKDATABASE(MuOnline) 将上面
49、的语句多次执行,直到日志文件缩小。execsp_dboption MuOnline,autoshrink,on 建立作业 ,每半个小时一次日志备份, 每天一次完全数据库备份。在 Log 收缩到正常大小后,将autoshrink选项设置为off 。二: 数据库增大是因为你的日志增大了,以前大家讨论过的,最简单可行的办法就是在你数据库属性 - 选项 -故障还原里面选成简单模式( 缺省为完全模式) , 然后选收缩数据库进行一次收缩,以后你的数据库基本就不怎么会增长了三: 1、进入企业管理器,选中数据库,比如muonline 2、所有任务 - 分离数据库3、到数据库文件的存放目录,将MuOnline_log.LDF文件删除,你怕S的话可以拷出去4、 企业管理器 - 附加数据库, 选 muonline , 这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。5、记得数据库重新附加后用户要重新设置一下。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 25 页 - - - - - - - - -
限制150内