为SQL Server数据库清空日志并收缩数据库

原文:为SQL Server数据库清空日志并收缩数据库

在SQL SERVER运行一段时间后,数据库的日志文件越来越大越来越大,有的时候我们为了减少日志文件的大小腾出存储空间,就要截断事务日志并收缩数据库,这样LOG文件占用的磁盘空间就被释放了。

要注意以下的任何一种操作都会使你丧失相应数据库的事务日志内容!操作之前一定要先备份数据库!!

对于SQL Server 2012之前的版本可以这样干:

--达叔傻乐 (darwin.zuo@163.com)
--打开查询分析器或者SSMS(SQL Server Management Studio)连接数据库服务器并新建个查询,
--把这里所有的查询代码都复制到新建的空白查询里,
--然后把下面第一行代码中的DBNAME改成你的数据库的名字再执行该查询就可以了

DECLARE @dbName NVARCHAR(MAX) = ‘DBNAME‘;

DECLARE @cmd4 NVARCHAR(MAX) = ‘DUMP TRANSACTION ‘ + @dbName + ‘ WITH NO_LOG;‘;
DECLARE @cmd5 NVARCHAR(MAX) = ‘BACKUP LOG ‘ + @dbName + ‘ WITH NO_LOG;‘;
DECLARE @cmd6 NVARCHAR(MAX) = ‘DBCC SHRINKDATABASE (‘ + @dbName + ‘ ,0);‘;

EXEC sys.sp_executesql @cmd4;
EXEC sys.sp_executesql @cmd5;
EXEC sys.sp_executesql @cmd6;

对于SQL Server 2012及更新版本要这么干:

--达叔傻乐 (darwin.zuo@163.com)
--打开SSMS(SQL Server Management Studio)连接数据库服务器并新建个查询,
--把这里所有的查询代码都复制到新建的空白查询里,
--然后把下面第一行代码中的DBNAME改成你的数据库的名字再执行该查询就可以了

DECLARE @dbName NVARCHAR(MAX) = ‘DBNAME‘;

DECLARE @cmd1 NVARCHAR(MAX) = ‘ALTER DATABASE ‘ + @dbName + ‘ SET RECOVERY SIMPLE;‘;
DECLARE @cmd2 NVARCHAR(MAX) = ‘ALTER DATABASE ‘ + @dbName + ‘ SET RECOVERY FULL;‘;
DECLARE @cmd3 NVARCHAR(MAX) = ‘DBCC SHRINKDATABASE (‘ + @dbName + ‘ ,0);‘;

EXEC sys.sp_executesql @cmd1;
EXEC sys.sp_executesql @cmd2;
EXEC sys.sp_executesql @cmd3;

达叔傻乐 ([email protected])

原文地址:https://www.cnblogs.com/lonelyxmas/p/12114633.html

时间: 2024-08-02 21:27:52

为SQL Server数据库清空日志并收缩数据库的相关文章

Sql Server 附加没有日志文件的数据库(.mdf)文件方法

附加数据库,附加的时候会提醒找不到log文件 针对以上现象有两个写法的语句能解决: 写法一: USE MASTER; EXEC sp_detach_db @dbname = 'TestDB'; EXEC sp_attach_single_file_db @dbname = 'TestDB', @physname = 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008\MSSQL\DATA\TestDB.mdf' 写法二: CREAT

SQL Server 2005无日志文件附加数据库

公司网站运营两年多了,日志文件超级大,在重装系统的时候,为了省事,就没有备份日志文件,而且是没有分离就把日志文件给删掉了(下次一定要记得先分离再删日志文件).结果造成数据库怎么都附加不上.出现错误. 解决办法: 1.新建一个同名数据库. 2.停止数据库服务,覆盖新建的数据库主文件(小技巧:最好放在同一个磁盘里面,把新建的数据库主文件删掉或移开,再把要恢复的数据库主文件剪切过去,这样就可以节省时间.) 3.启动数据库服务,数据库变为置疑或可疑状态.然后在查询分析器中运行: alter databa

SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改

当数据库有数据修改数据库字段时,默认是阻止的! 工具---选项---设计器---阻止保存要求重新创建表的更改(取消钩)

【转】SQL Server如何截断(Truncate)和收缩(Shrink)事务日志

SQL Server如何截断(Truncate)和收缩(Shrink)事务日志分类: SQL Server数据库备份还原2010-01-25 14:321708人阅读评论(4)举报 当SQL Server截断事务日志时,它仅仅是在虚拟日志文件中做个标记,以便不再使用它,然后准备以重用形式来做备份(假如运载在完整或是批量日志恢复模型).也就是说,在使用简单恢复模型时,事务日志包括如下的日志记录: 当checkpoint发生时,虚拟日志文件1.2不再被使用,因为事务1.2已经被提交了,而且日志记录也

SQL Server如何截断(Truncate)和收缩(Shrink)事务日志

原文:http://blog.csdn.net/tjvictor/article/details/5253931 ? 当SQL Server截断事务日志时,它仅仅是在虚拟日志文件中做个标记,以便不再使用它,然后准备以重用形式来做备份(假如运载在完整或是批量日志恢复模型).也就是说,在使用简单恢复模型时,事务日志包括如下的日志记录: 当checkpoint发生时,虚拟日志文件1.2不再被使用,因为事务1.2已经被提交了,而且日志记录也不再需要回滚了.然后SQL Server重用虚拟日志文件1.2,

SQL Server 2008下日志清理方法

每次看到暴涨的数据库日志就有些头大,于是乱搜一通找个办法把日志干掉,下次又头大,又搜半天,于是还是写篇blog,不用乱找了. 1.将数据库设置成 简单 模式 选择要收缩的数据库,点右键 属性->选项,选择 简单模式 2.选择任务->收缩->文件 3.选择日志 或者用如下语句 代码 USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY 

SQL Server 2008下日志清理方法 2

SQL Server 2008下日志清理方法 (2011-07-14 10:30:45) 转自 http://blog.sina.com.cn/s/blog_4bdd3d0b0100wfvq.html 标签: it   每次看到暴涨的数据库日志就有些头大,于是乱搜一通找个办法把日志干掉,下次又头大,又搜半天,于是还是写篇blog,不用乱找了. 1.将数据库设置成 简单 模式 选择要收缩的数据库,点右键 属性->选项,选择 简单模式 2.选择任务->收缩->文件 3.选择日志 或者用如下语

SQL Server 2012笔记分享-54:数据库文件管理1

(一)添加文件 可以在线执行,不影响数据库使用 ,如图. 添加完成后,如图所示. 也可以通过脚本的形式来添加,如图. (二)删除文件 可以在线执行,不影响数据库使用 . 只有当文件中的实际使用空间为空时才能被成功执行 . (三)移动文件到不同的磁盘路径下 必须先将数据库脱机,将导致数据库暂时不可用 详情参考:http://msdn.microsoft.com/zh-cn/library/ms345483.aspx 若要将移动数据或日志文件作为计划的重定位的一部分,请执行下列步骤: 1. 运行以下

SQL Server 2008 R2 里迁移系统数据库的方法

针对不同的场景,采用不同的步骤. 对非master以及resource系统数据库而言,分两种情况. 1.非master以及resource系统数据库正常. 这里以迁移msdb为例,将msdb从D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\迁移到D:\SQL2K8_DATA\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\system\目录下. 首先我们检查当前msdb的路径 ? 1 2 3 SELECT name, phys