网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

删除SQL日志方法

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了删除SQL日志方法的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!


    删除SQL日志方法
    1.打开查询分析器,输入命令
    DUMPTRANSACTION数据库名WITHNO_LOG
    2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
    清除Log有两种方法:1.自动清除法
    开放数据库选项TruncLogonChkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由SQLServer自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。
    2.手动清除法
    执行命令“dumptransaction”来清除Log。以下两条命令都可以清除日志:dumptransactionwithtruncate_onlydumptransactionwithno_log
    通常删除事务日志中不活跃的部分可使用“dumptransactionwithtrancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE提供“dumptransactionwithno_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQLServer会弹出一条警告信息。为了尽量确保数据库的一致性,你应将它作为“最后一招”。以上两种方法只??清除日志,而不做日志备份,若想备份日志,应执行“dumptransactiondatabase_nametodumpdevice”命令。
    PS:附一个更好的方法
    先分离数据库后,直接删除日志以后,再在查询分析器里用execsp_attach_single_file_db'数据库名','.mdf文件路径'命令附加数据库。OVER.在别的地方看到的不错。数据库日志操作
    先提供一种复杂的方法压缩日志及数据库文件如下:
    1.清空日志
    DUMPTRANSACTION库名WITHNO_LOG2.截断事务日志:
    BACKUPLOG数据库名WITHNO_LOG
    3.收缩数据库文件(如果不压缩,数据库的文件不会减小
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    也可以用SQL语句来完成--收缩数据库
    DBCCSHRINKDATABASE(客户资料)
    --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*fromsysfiles
    DBCCSHRINKFILE(1)
    4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:
    企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:
    企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:
    下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器。
    a.分离
    EXECsp_detach_db@dbname='pubs'b.删除日志文件c.再附加
    EXECsp_attach_single_file_db@dbname='pubs',
    @physname='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf'5.为了以后能自动收缩,做如下设置:
    企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:
    EXECsp_dboption'数据库名','autoshrink','TRUE'6.如果想以后不让它日志增长得太大
    企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:
    alterdatabase数据库名modifyfile(name=逻辑文件名,maxsize=20)特别注意:
    请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步
    第4步不安全,有可能损坏数据库或丢失数据
    第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.另外提供一种更简单的方法,本人屡试不爽,建议大家使用。更简单的方法:
    1。右建数据库属性窗口--故障还原模型--设为简单
    2。右建数据库所有任务--收缩数据库
    3。右建数据库属性窗口--故障还原模型--设为大容量日志记录可能有不少朋友遇到过这样的问题:
    update或delete语句忘带了where子句,或where子句精度不够,执行之后造成了严重的后果,
    这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的SQL没有进行相应的全库备份
    或不能备份日志(truncatelogoncheckpoint选项为1),那么就无法进行数据的恢复了,或者
    只能恢复到最近一次的备份的数据了。以下简单说明恢复数据方法:
    1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进进行一次日志备份(如果为了不让日志文件变大而置trunc.logonchkpt.选项为1那你就死翘了)
    backuplogdbNametodisk='fileName'
    2,恢复一个全库备份,注意需要使用withnorecovery,如果还有其他差异或增量备份,则逐个恢复
    restoredatabasedbNamefromdisk='fileName'withnorecovery
    3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻restorelogdbNamefromdisk='fileName'withstopat='date_time'
    以上这些操作都可以在SQLSERVER企业管理器里完成,难度不大。。。日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1.打开查询分析器,输入命令
    DUMPTRANSACTION数据库名WITHNO_LOG
    2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
    另一种方法有一定的风险性,因为SQLSERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
    1:删除LOG
    分离数据库企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件
    附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。注意:建议使用第一种方法。如果以后,不想要它变大。SQL2000下使用:
    在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。或用SQL语句:
    alterdatabase数据库名setrecoverysimple
    另外,Truncatelogoncheckpoint(此选项用于SQL7.0,SQL2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT命令时如果事务日志文件超过其大小的70%则将其内容清除在开发数据库时时常将此选项设置为TrueAutoshrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25%当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncatelogoncheckpoint选项设为True时才能进行。
    注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。
    当然,如果误操作是一些不记日志的操作比如truncatetable,selectinto等操作,那么是无法利
    用上述方法来恢复数据的...删除SQL日志1:删除LOG
    1:分离数据库企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件
    3:附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有520多K再将此数据库设置自动收缩或用代码:
    下面的示例分离77169database,然后将77169database中的一个文件附加到当前服务器。
    EXECsp_detach_db@dbname='77169database'
    EXECsp_attach_single_file_db@dbname='77169database',@physname='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\77169database.mdf
    2:清空日志
    DUMPTRANSACTION库名WITHNO_LOG///DUMPTRANSACTIONulionmisWITHNO_LOG再:
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    3:如果想以后不让它增长
    企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M自动收缩日志,也可以用下面这条语句AlterDATABASE数据库名SETAUTO_SHRINKON
    故障还原模型改为简单,用语句是USEMASTER
    GO
    AlterDATABASE数据库名SETRECOVERYSIMPLEGO
    -------------------------------------------------------------------------------
    截断事务日志:
    BACKUPLOG{database_name|@database_name_var}{[WITH
    {NO_LOG|TRUNCATE_ONLY}]}
    --压缩日志及数据库文件大小/*--特别注意
    请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.--*/1.清空日志
    DUMPTRANSACTION库名WITHNO_LOG2.截断事务日志:
    BACKUPLOG数据库名WITHNO_LOG
    3.收缩数据库文件(如果不压缩,数据库的文件不会减小
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
    --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    也可以用SQL语句来完成--收缩数据库
    DBCCSHRINKDATABASE(客户资料)
    --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*fromsysfilesDBCCSHRINKFILE(1)
    4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:
    企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:
    企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:
    下面的示例分离77169database,然后将77169database中的一个文件附加到当前服务器。
    a.分离
    EXECsp_detach_db@dbname='77169database'b.删除日志文件c.再附加
    EXECsp_attach_single_file_db@dbname='77169database',@physname='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\77169database.mdf'
    5.为了以后能自动收缩,做如下设置:
    企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:
    EXECsp_dboption'数据库名','autoshrink','TRUE'6.如果想以后不让它日志增长得太大
    企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:
    alterdatabase数据库名modifyfile(name=逻辑文件名,maxsize=20)
    -------------------------------------------------------------------------------
    /*--压缩数据库的通用存储过程压缩日志及数据库文件大小因为要对数据库进行分离处理
    所以存储过程不能创建在被压缩的数据库中--*//*--调用示例execp_compdb'test'--*/
    usemaster--注意,此存储过程要建在master数据库中go
    ifexists(select*fromdbo.sysobjectswhereid=
    object_id(N'[dbo].[p_compdb]')andOBJECTPROPERTY(id,N'IsProcedure')=1)
    dropprocedure[dbo].[p_compdb]GO
    createprocp_compdb
    @dbnamesysname,--要压缩的数据库名
    @bkdatabasebit=1,--因为分离日志的步骤中,可能会损坏数据库,所以你可以选择是否自动数据库
    @bkfnamenvarchar(260)=''--备份的文件名,如果不指定,自动备份到默认备份目录,备份文件名为:数据库名+日期时间
    as
    --1.清空日志
    exec('DUMPTRANSACTION['+@dbname+']WITHNO_LOG')--2.截断事务日志:
    exec('BACKUPLOG['+@dbname+']WITHNO_LOG')--3.收缩数据库文件(如果不压缩,数据库的文件不会减小exec('DBCCSHRINKDATABASE(['+@dbname+'])')--4.设置自动收缩
    exec('EXECsp_dboption'''+@dbname+''',''autoshrink'',''TRUE''')--后面的步骤有一定危险,你可以可以选择是否应该这些步骤--5.分离数据库if@bkdatabase=1begin
    ifisnull(@bkfname,'')=''
    set@bkfname=@dbname+'_'+convert(varchar,getdate(),112)+replace(convert(varchar,getdate(),108),':','')
    select提示信息='备份数据库到SQL默认备份目录,备份文件名:'+@bkfnameexec('backupdatabase['+@dbname+']todisk='''+@bkfname+'''')end
    --进行分离处理
    createtable#t(fnamenvarchar(260),typeint)
    exec('insertinto#tselectfilename,type=status&;0x40from['+@dbname+']..sysfiles')
    exec('sp_detach_db'''+@dbname+'''')--删除日志文件
    declare@fnamenvarchar(260),@svarchar(8000)
    declaretbcursorlocalforselectfnamefrom#twheretype=64opentb
    fetchnextfromtbinto@fnamewhile@@fetch_status=0begin
    set@s='del"'+rtrim(@fname)+'"'execmaster..xp_cmdshell@s,no_outputfetchnextfromtbinto@fnameendclosetbdeallocatetb--附加数据库set@s=''
    declaretbcursorlocalforselectfnamefrom#twheretype=0opentb
    fetchnextfromtbinto@fnamewhile@@fetch_status=0begin
    set@s=@s+','''+rtrim(@fname)+''''fetchnextfromtbinto@fnameendclosetbdeallocatetb
    exec('sp_attach_single_file_db'''+@dbname+''''+@s)go
    日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1.打开查询分析器,输入命令
    DUMPTRANSACTION数据库名WITHNO_LOG
    2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
    另一种方法有一定的风险性,因为SQLSERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
    1:删除LOG
    分离数据库企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件
    附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。注意:建议使用第一种方法。如果以后,不想要它变大。SQL2000下使用:
    在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
    或用SQL语句:
    alterdatabase数据库名setrecoverysimple
    另外,Truncatelogoncheckpoint(此选项用于SQL7.0,SQL2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT命令时如果事务日志文件超过其大小的70%则将其内容清除在开发数据库时时常将此选项设置为TrueAutoshrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25%当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncatelogoncheckpoint选项设为True时才能进行。
    注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。
    如何删除sql2000日志2004年9月24日11:23
    前几天也碰到日志文件过大的问题,数据库实际大小为600M,日志文件实际大小为33M,但日志文件占用空间为2.8G!!!
    试了多种方式,SHIRNKDATABASE,TRUNCATELOGFILE,都没办法将文件缩小。无论如何,这应该算SQLSERVER的一个BUG吧。
    后来找到下面的代码,就可以将日志文件缩小到自己想要的大小了。把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)
    -----
    SETNOCOUNTON
    DECLARE@LogicalFileNamesysname,@MaxMinutesINT,@NewSizeINT
    USEMarias--要操作的数据库名
    Select@LogicalFileName=‘Marias_log‘,--日志文件名
    @MaxMinutes=10,--Limitontimeallowedtowraplog.@NewSize=100--你想设定的日志文件的大小(M)
    --Setup/initializeDECLARE@OriginalSizeintSelect@OriginalSize=sizeFROMsysfiles
    Wherename=@LogicalFileName
    Select‘OriginalSizeof‘+db_name()+‘LOGis‘+CONVERT(VARCHAR(30),@OriginalSize)+‘8Kpagesor‘+CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+‘MB‘FROMsysfiles
    Wherename=@LogicalFileNameCreateTABLEDummyTrans
    (DummyColumnchar(8000)notnull)DECLARE@CounterINT,@StartTimeDATETIME,@TruncLogVARCHAR(255)Select@StartTime=GETDATE(),
    @TruncLog=‘BACKUPLOG‘+db_name()+‘WITHTRUNCATE_ONLY‘DBCCSHRINKFILE(@LogicalFileName,@NewSize)EXEC(@TruncLog)
    --Wrapthelogifnecessary.
    WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--timehasnotexpired
    AND@OriginalSize=(SelectsizeFROMsysfilesWherename=@LogicalFileName)
    AND(@OriginalSize*8/1024)>@NewSize
    BEGIN--Outerloop.Select@Counter=0
    WHILE((@Counter<@OriginalSize/16)AND(@Counter<50000))BEGIN--update
    InsertDummyTransvalueS(‘FillLog‘)DeleteDummyTrans
    Select@Counter=@Counter+1END
    EXEC(@TruncLog)END
    Select‘FinalSizeof‘+db_name()+‘LOGis‘+CONVERT(VARCHAR(30),size)+‘8Kpagesor‘+CONVERT(VARCHAR(30),(size*8/1024))+‘MB‘FROMsysfiles
    Wherename=@LogicalFileNameDropTABLEDummyTransSETNOCOUNTOFF
    删除MSSQLServer2000日志1.打开MSSQLServer2000企业管理器
    2.打开数据库,选中需要删除日期的数据库,点击“察看”,选择“任务板”:3.鼠标右键点中需要删除日期的数据库,选择右键菜单“所有任务”-“备份数据库”:4.选择“事务日志”:
    5.点击“添加”,选择“文件名”:
    6.选择备份目录,输入文件名,点击“确定”:
    7.点击“确定”:
    8.选择“重写现有媒体”,点击“确定”:9.开始备份:10.备份完成:
    事务日志删除了一部分,如果还不够小,则再重复一次。
    11.重新鼠标右键点中需要删除日志的数据库,选择右键菜单“所有任务”-“收缩数据库”:
    12.点击“文件”:
    13.选择日志“数据库文件”,在“收缩操作”中选择“从文件结尾截断可用空间”,点击“确定”:
    14.日志收缩完毕:
    关于SQLServer事务日志的问题汇总
    1、用BACKUPLOGdatabaseWITHNO_LOG清除日志
    把数据库属性中的故障还原模型改为“简单”可以大大减慢日志增长的速度。如果把还原模型调到简单,这样就不支持时间点还原了,但是日志文件会很小,如果数据比较重要推荐还是把数据库的还原模型调为完全。
    用BACKUPLOGdatabaseWITHNO_LOG命名后,会截断不活动日志,不减小物理日志文件的大小,但逻辑日志会减小,收缩数据库后会把不活动虚拟日志删除来释放空间,不会损坏数据。
    如果日志被截断并收缩数据库后,就不能直接用最近的一个全库备份做时间点还原,建议立即备份数据库,以防万一。
    2、sqlserver运行中,删除主数据库事务日志文件
    步骤如下:(1)、分离数据库:企业管理器--数据库--右击你要删除日志的数据库--所有任务--分离数据库
    (2)、然后删除日志文件
    (3)、然后再附加数据库:企业管理器--数据库--右击数据库--所有任务--附加数据库。这时候只附加mdf就可以了。
    3、压缩SQL数据库及日志的详细方法
    数据库在使用一段时间后,时常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。当数据库中没有数据时,可以修改数据库文件属性直接改变其占用空间,但当数据库中有数据时,这样做会破坏数据库中的数据,因此需要使用压缩的方式来缩减数据库空间。可以在数据库属性选项中选择“Autoshrink”选项,让系统自动压缩数据库,也可以用人工的方法来压缩。人工压缩数据库有以下两种方式:
    1)、用EnterpriseManager压缩数据库
    在EnterpriseManager中在所要压缩的数据库上单击右键,从快捷菜单中的“所有任务(AllTasks)”中选择“ShrinkDatabase(压缩数据库)”选项,可以在对话框中选择数据库的压缩方式,也可以选择使用压缩计划或压缩单个文件。单击“Files”按钮,会出现压缩数据库文件对话框,可以针对每个数据库文件进行不同的压缩设置。单击“Change”按钮,会出现压缩计划编辑对话框,可以指定压缩计划的执行方式。单击“Change”按钮,会出现循环工作计划编辑对话框,可以编辑计划执行的周期或时间点。设置完成后单击“OK”按钮就开始压缩数据库,在压缩结束后会显示一个压缩情况信息框。
    2)、用Transact-SQL命令压缩数据库
    可以使用DBCCSHRINKDATABASE和DBCCSHRINKFILE命令来压缩数据库。其中DBCCSHRINKDATABASE命令对数据库进行压缩,DBCCSHRINKFILE命令对数据库中指定的文件进行压缩。
    (1)、DBCCSHRINKDATABASE
    DBCCSHRINKDATABASE命令语法如下:
    DBCCSHRINKDATABASE(database_name[,target_percent][,{NOTRUNCATE|TRUNCATEONLY}])
    各参数说明如下:
    ·target_percent指定将数据库压缩后,未使用的空间占数据库大小的百分之几。如果指定的百分比过大,超过了压缩前未使用空间所占的比例,则数据库不会被压缩。并且压缩后的数据库不能比数据库初始设定的容量小。
    ·NOTRUECATE
    将数据库缩减后剩余的空间保留在数据库,中不返还给操作系统。如果不选择此选项,则剩余的空间返还给操作系统。
    ·TRUNCATEONLY
    将数据库缩减后剩余的空间返还给操作系统。使用此命令时SQLServer将文件缩减到最后一个文件分配,区域但不移动任何数据文件。选择此项后,target_percent选项就无效了。
    例:压缩数据库mytest的未使用空间为数据库大小的20%。dbccshrinkdatabase(mytest,20)运行结果如下:
    DBCCexecutioncompleted.IfDBCCprintederrormessages,contactyoursystemadministrator.
    (2)、DBCCSHRINKFILE
    DBCCSHRINKFILE命令压缩当前数据库中的文件。其语法如下:
    DBCCSHRINKFILE({file_name|file_id}{[,target_size]|[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]})
    各参数说明如下:·file_id
    指定要压缩的文件的鉴别号(Identificationnumber,即ID)。文件的ID号可以通过FILE_ID()函数或如本章前面所讲述的Sp_helpdb系统存储过程来得到。
    ·target_size
    指定文件压缩后的大小。以MB为单位。如果不指定此选项,SQLServer就会尽最大可能地缩减文件。
    ·EMPTYFILE
    指明此文件不再使用,将移动所有在此文件中的数据到同一文件组中的其它文件中去。执行带此参数的命令后,此文件就可以用AlterDATABASE命令来删除了。
    其余参数NOTRUNCATE和TRUNCATEONLY与DBCCSHRINKDATABASE命令中的含义相同。例:压缩数据库mydb中的数据库文件mydb_data2的大小到1MB。usemydbdbccshrinkfile(mydb_data2,1)
    目前的状况是:MDF文件保存完好(已拷出来),LDF已丢失。使用EXECsp_attach_single_file_db@dbname='TyBusiness',@physname='E:\Help\TyBusiness.MDF'报如下错误:
    未能打开新数据库'TyBusiness'。CreateDATABASE将终止。设备激活错误。物理文件名'd:\ProgramFiles\MicrosoftSQLServer\MSSQL\TyBusiness_log.ldf'可能有误。
    1.先建一个与你要恢复的数据库名称一样的数据库.2.停止sqlserver,把你的数据库替换这个数据库3.重起sqlserver,把数据库设成紧急状态:sp_configure'allow',1reconfigurewithoverirde
    updatesysdatabasessetstatus=32768wherename='yourdata'4.重建日志文件
    dbccrebuild_log('yourdata','yourdatapath\newdata_log.ldf')5.取消紧急模式
    updatesysdatabasessetstatus=0wherename='yourdata'restoresysdatabasesyourdatawithrecoverysp_configure'allow',0reconfigurewithoverride6.重起sqlserver7.ok
    减小SQL日志。useyourdatabasenameGO
    backuplogyourdatabasenamewithTRUNCATE_ONLYGO
    DBCCSHRINKFILE(逻辑文件名,收缩后的大小)
    GO
    在QueryAnalyzer中:1.執行:
    EXECsp_detach_db'dbname','true';--將你的數據庫卸除
    然後將SQLServer安裝路徑下的data目錄中的dbname_log.ldf文件移走或刪除2.
    EXECsp_attach_single_file_db
    'dbname','d:\mssql7\data\dbname.mdf';
    --以單文件形式恢復數據庫,系統自動分配給你一個500K大小的日誌文件.useyourdatabasenameGO
    backuplogyourdatabasenamewithTRUNCATE_ONLYGO
    DBCCSHRINKFILE(逻辑文件名,收缩后的大小)GO
    彻底删除数据库日志的方法
    现在私服运行了一段时间,特别是人比较多的服,相信大家的数据库日志log文件已经相当大了吧。其实这些log文件对于我们普通用户来说是没什么用,上面只是详细的记录了所有对该数据库的每一步操作,实际的数据已经保存到数据库文件中了,所以是不可能有什么回档之类的问题的。以前我们也问过微软的人,据说是如果你的数据库文件坏掉了,有这个他们有办法帮助你恢复数据库,但是由于方法并不公开,所以对于我们来说,这只是占空间的东西。因为原先没觉得这个是问题,所以也没站出来介绍一下,现在看越来越多的朋友问这个问题,就提供一下方法。下面是主题了:
    1、进入企业管理器,选中数据库,比如muonline2、所有任务->分离数据库
    3、到数据库文件的存放目录,将MuOnline_log.LDF文件删除,你怕S的话可以拷出去
    4、企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
    5、记得数据库重新附加后用户要重新设置一下。以后如果新的日志文件变大了,再继续这个步骤就行了--假设test2为数据库名称在查询分析器中执行:
    backuplogMuOnlinewithNO_LOGbackuplogMuOnlinewithTRUNCATE_ONLYDBCCSHRINKDATABASE(MuOnline)
    将上面的语句多次执行,直到日志文件缩小。execsp_dboptionMuOnline,autoshrink,on
    建立作业,每半个小时一次日志备份,每天一次完全数据库备份。在Log收缩到正常大小后,将autoshrink选项设置为off。查询分析器里运行:
    backuplogMuOnliewithNO_LOGbackuplogMuOnliewithTRUNCATE_ONLYDBCCSHRINKDATABASE(MuOnlie)
    关于SQL的日志清理命令!大家看看有没有用吧!BACKUPLOGMuOnlineWITHNO_LOGDBCCSHRINKDATABASE(MuOnline,10)
    这是清理MuOnline日志的千万点到MuOnline再选查询分析器不然整理了其他数据库会出错的
    看看这个
    关于各种日志暴大的解决办法(3种)关于各种日志暴大的解决办法
    要限制sql日志的大小很容易,只要选到那两个数据库(muonline和ranking)然后右键属性,在数据文件和事务日志里面就可以改
    关键是那个joinserver的日志,有时候很正常,一天下来顶多几十m,有时候1分钟就能赏到4个G,其实要他不生成那么大的日志很简单,只要到joinserver的目录里面把log那个目录删除或改名就可以了(我就是这么干的),一点都不影响使用,开joinserver的时候它只会说writelogerror,对正常使用没有影响,这样joinserver目录就一直是700多k了,哈哈
    对于GS和其他的日志,因为都很小,所以就没改,个人认为其实也可以这么干的真正解决数据库日志大的方法
    首先在数据库属性里把按百分比增长从10%改为1%,这样就大大限制了增长速度其次在每次重启服务器的时候,在查询器里执行下面的,这样的方法是我认为最安全也是最简单的,建议置顶
    感觉好用的朋友顶了
    backuplogMuOnlinewithNO_LOGbackuplogMuOnlinewithTRUNCATE_ONLYDBCCSHRINKDATABASE(MuOnline)解决数据库日志大的方法
    、进入企业管理器,选中数据库,比如muonline2、所有任务->分离数据库
    3、到数据库文件的存放目录,将MuOnline_log.LDF文件删除,你怕S的话可以拷出去
    4、企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
    5、记得数据库重新附加后用户要重新设置一下[推荐]数据库自动备份、缩小以及防止回档
    不要在属性里限制数据库大小,这样文件容量满的时候会出现回档建立作业,每天自动备份数据库,自动删除2天前的备份
    建立作业,每天运行一次以下代码,缩小日志文件backuplogMuOnlinewithNO_LOGbackuplogMuOnlinewithTRUNCATE_ONLYDBCCSHRINKDATABASE(MuOnline)
    我就是这么做的,什么问题都没有,MU服务端全部用到的空间顶多2个G日志可以这样减肥!!
    右击MuOnline,所有任务,分离数据库然后到D:\Muserver\db把那个.log文件删掉你会发现MuOnline数据库消失了右击一下,所有任务,点附加数据库路径指向D:\Muserver\db选中里面的.mdf你会发现日志有个大叉叉不管它,直接点确定。
    系统提示找不到日志,要不要新建一个新建一个就Ok了。这样减肥效果不错吧。解决方法
    日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1.打开查询分析器,输入命令
    DUMPTRANSACTION数据库名WITHNO_LOG
    2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
    另一种方法有一定的风险性,因为SQLSERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
    1:删除LOG
    分离数据库企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件
    附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。注意:建议使用第一种方法。如果以后,不想要它变大。SQL2000下使用:
    在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。或用SQL语句:
    alterdatabase数据库名setrecoverysimple
    另外,如上图中数据库属性有两个选项,与事务日志的增长有关:
    Truncatelogoncheckpoint(此选项用于SQL7.0,SQL2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT命令时如果事务日志文件超过其大小的70%则将其内容清除在开发数据库时时常将此选项设置为TrueAutoshrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25%当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncatelogoncheckpoint选项设为True时才能进行。
    注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。
    减少SQL日志的方法
    --------------------------------------------------------------------------------
    一:
    分享]解决SQL日志增大的办*[望置顶]
    --假设test2为数据库名称在查询分析器中执行:
    backuplogMuOnlinewithNO_LOGbackuplogMuOnlinewithTRUNCATE_ONLYDBCCSHRINKDATABASE(MuOnline)
    将上面的语句多次执行,直到日志文件缩小。execsp_dboption'MuOnline','autoshrink','on'
    建立作业,每半个小时一次日志备份,每天一次完全数据库备份。在Log收缩到正常大小后,将autoshrink选项设置为off。二:
    数据库增大是因为你的日志增大了,以前大家讨论过的,最简单可行的办法就是在你数据库属性->选项->故障还原里面选成简单模式(缺省为完全模式),然后选收缩数据库进行一次收缩,以后你的数据库基本就不怎么会增长了
    三:
    1、进入企业管理器,选中数据库,比如muonline2、所有任务->分离数据库
    3、到数据库文件的存放目录,将MuOnline_log.LDF文件删除,你怕S的话可以拷出去
    4、企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
    5、记得数据库重新附加后用户要重新设置一下。
    
  • 上一篇资讯: 删除数据的sql语句
  • 下一篇资讯: 几百套PHP学习资料
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师