第一步:在SQLSERVERManagementStudio中右击数据库选择“属性”---》“选项”,将恢复模式由默认的“完整”改为“简单”。
第二步:再次右键选择数据库的“任务”--》“收缩”---》“文件”菜单,进入收缩文件页面,将(要收缩的)文件类型选定为“日志”,将页面下面的“收缩操作”单选框里选择“在释放未使用的空间前重新组织页,将文件收缩到:”,然后填写合适的收缩后的日志文件大小。
最后点击这个页面下面的“确定”按钮,以执行收缩文件(日志)操作。
执行完毕后,用户可以查到到的确该日志文件收缩到指定的大小了。
将文件收缩到0即可。瞬间就ok了,比用命令快多了,对于36g的日志也很快。
第三步:在SQLSERVERManagementStudio中右击数据库选择“属性”---》“选项”,将恢复模式由默认的“简单”改为“完整”。
下面是最常用的方法一
USE[master]
GO
ALTERDATABASE库名SETRECOVERYSIMPLEWITHNO_WAIT
GO
ALTERDATABASE库名SETRECOVERYSIMPLE--简单模式
GO
USE库名
GO
DBCCSHRINKFILE(N'库名_log',11,TRUNCATEONLY)
GO
--这里的DNName_Log如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询
--USE库名
--GO
--SELECTfile_id,nameFROMsys.database_files;
--GO
USE[master]
GO
ALTERDATABASESCDMSSETRECOVERYFULLWITHNO_WAIT
GO
ALTERDATABASESCDMSSETRECOVERYFULL--还原为完全模式
GO
一般来说上面的sql对于日志2个G内速度还可以,如果不行请参考下面的步骤
1:然后在网上查找命令,找到日志文件类型为REPLICATION即发布状态
2:又查找到执行命令,该命令显示很多status为2的日志,即没有提交的。
DBCCLOGINFO('数据库名称')
3:直接选择我之前创建的发布,提示以下错误:
sqlserver无法作为数据库主体执行,因为主体"dbo"不存在...
查找到以下命令,为用户添加数据库角色时提示已经存在此帐号请查看数据库下是否已经存在该帐号并删除重新授权
USE库名
EXECsp_changedbowner'sa'
4:然后再删除发布和订阅即成功。最后再执行第一步的SQL命令,日志文件缩小成功。
方法二、先设置恢复模式为“简单恢复”模式,再收缩:
USEBigData;
GO
ALTERDATABASEBigData
SETRECOVERYSIMPLE;--设置简单恢复模式
GO
DBCCSHRINKFILE(BigData_Log,1);
GO
ALTERDATABASEBigData
SETRECOVERYFULL;--恢复为原模式
GO
方法三、
USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d:\test.bak'
--Shrinkthetruncatedlogfileto1MB.
DBCCSHRINKFILE(Bigdata_Log,1);
GO
|