首先解释一下数据库的版本是SQL Server 2012.清除的数据库800多G,磁盘空间就剩10多G,数据量最多的表有2亿.目的就是清楚去年的数据(2017年之前),遇到了一些问题,总结起来就是三方面问题: 1.如何清理日志文件. 2.删除千万级别的数据. 3.数据库的收缩操作. 一.清除日志文件 刚开始直接用delete语句删除给报了两次错误:“The transaction log for database 'DB' is full due to 'ACTIVE_TRANSACTION'.
--设置简单模式 USE[master] GO ALTER DATABASE mindeemes_spy SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE mindeemes_spy SET RECOVERY SIMPLE GO --设置压缩后的日志大小为2M,可自定义 USE mindeemes_spy GO DBCC SHRINKFILE (N'mindeemes_spy_log' , 2, TRUNCATEONLY) GO --还原完全模
USE[master] GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库 SET RECOVERY SIMPLE --简单模式 GO USE 数据库 GO DBCC SHRINKFILE (N'数据库_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定 GO USE[master] GO ALTER DATABASE 数据库 SET RECOVERY
适用于SQL Server 2005的方法 --------------------------------------------- 复制代码 代码如下: USE DNName GO 1,清理日志 复制代码 代码如下: Backup Log DNName WITH no_log GO 2,截断事务日志 复制代码 代码如下: DUMP TRANSACTION DNName WITH no_log GO 3,收缩 两种方式: 1):压缩数据库 DBCC SHRINKDATABASE(库名) GO
USE [{数据库名称}] DECLARE @bakfile nvarchar(100) SET @bakfile='E:\DbLogs\log_bak_'+CONVERT(nvarchar(8),GETDATE(),112)+'.log' --备份日志压缩文件路径 BACKUP LOG [{数据库名称}] TO DISK= @bakfile WITH RETAINDAYS= 1,COMPRESSION --备份日志 DBCC SHRINKFILE (N'{数据库日志文件逻辑名称}', 0) G
USE [master]; SET NOCOUNT ON; )=''; )=''; DECLARE @clearSql VARCHAR(MAX)=''; ; ,),TMP_WHILE_FLAG, T.tbName,T.tbLog INTO #TMP_WHILE FROM ( SELECT master.sys.databases.name AS tbName, master.sys.master_files.name AS tbLog FROM master.sys.master_files I
前言碎语 关于对SQL SERVER 日志文件管理方面了解不多的话,可以参考我的这篇博客文章“MS SQL 日志记录管理”,不过这篇文章只是介绍对SQL SERVER日志记录的深入认知了解,并没有提出如何管理日志文件的方案,如果你有兴趣的话,倒不妨可以钻研一下如何管理.提取日志记录信息,这是数据库精细化管理的一个方面,如果手头管理的服务器过多,事情过多,你很难做到精细化管理!很多事情都忙不过来,需要时间去做! 问题现象 这几天有台数据库服务器一天会收到8封左右的告警邮件,大致内容如下: DATE