数据库日志过大解决方法

1、SQL2000数据库:
执行这个脚本不能单纯的使用SQLScript.sql的方式,请先备份数据库后,打开SQL查询分析器(MSSQL2000)或者
VS management(MSSQL2003以上版本)的新建查询,填写日志过大的数据库名(例如:mis),执行SQL语句即可;

--1.清空日志
DECLARE @DBName VARCHAR(64)
SET @DBName=‘mis‘
DUMP TRANSACTION @DBName WITH NO_LOG

--2.截断事务日志
BACKUP LOG @DBName WITH NO_LOG

--3.收缩数据库
DBCC SHRINKDATABASE(@DBName)
GO

SQL2005以上版本:
脚本如下:
*****************************************************************************
USE [master]
GO
ALTER DATABASE Mis_GXZL SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE Mis_GXZL SET RECOVERY SIMPLE --简单模式
GO
USE Mis_GXZL
GO
DBCC SHRINKFILE (N‘Mis_Log‘ , 20, TRUNCATEONLY)
GO
--这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询
USE Mis_GXZL
GO
SELECT file_id, name FROM sys.database_files;
GO
USE [master]
GO
ALTER DATABASE Mis_GXZL SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE Mis_GXZL SET RECOVERY FULL --还原为完全模式
GO
********************************************************************************
注意:
1、请拷贝两行“*”中间的内容;
2、需要替换两个参数:
Mis_GXZL :需要收缩的SQL2008的数据库名;
DBCC SHRINKFILE (N‘Mis_Log‘ , 11, TRUNCATEONLY)中的 Mis_Log,这个参数需要根据
USE Mis_GXZL
GO
SELECT file_id, name FROM sys.database_files;
GO
来查询出来该数据库对应的日志文件的物理文件名;
2、日志手动清理后,在SQL Management studio下数据库名右击属性,在数据库属性下选中选项,在选项下自动下的自动收缩的false改成true即可;
3、在设置数据库维护计划时,选择维护计划任务为备份和收缩数据库;

时间: 2024-10-16 01:51:10

数据库日志过大解决方法的相关文章

64位系统使用Access 数据库文件的彻底解决方法

最近,有PDF.NET用户问我怎么在64位系统下无法访问Access数据库的问题,我第一反应是我怎么没有遇到呢?今天一看自己的VS和Office都是32位版本的,所以在VS里面调试访问Access是没有问题的,但是直接使用编译好的.NET程序访问Access,就出问题了,报: 未在本地计算机上注册“Microsoft.Jet.Oledb.4.0”提供程序. 于是,又在公司的电脑上(Win7 64位)做了实验,发现跟家里面的Win8.1 64位 问题一样,上网搜索了一下,大部分都建议将.NET程序

TortoiseSVN无法编辑日志信息的解决方法

提交时忘记编写日志,事后想在版本库浏览器中编辑日志信息,却弹出错误,"此版本库不允许修改版本属性请管理员创建pre-revprop-change钩子".解决方法如下: 在版本库的hooks目录中,新建pre-revprop-change.bat文本文件,编辑内容为: if "%4" == "svn:log" exit 0 echo Property '%4' cannot be changed >&2 exit 1 上面的批处理命令

sqlite:多线程操作数据库“database is locked”解决方法(二)

上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大量数据的情况下,延时会拖慢进度. 想出方法二: 1. 创建一个链表,链接如下格式的结构体,线程1,线程2,线程3......不直接改写数据库,而是把sql语句插入链表中: typedef struct { uint8_t *buf; uint32_t len; } sqlItem_t; 2. 创建一个独立的线

登录oracle数据库提示账户锁定解决方法

问题再现: 由于更改了oracle账户的密码,退出重新连接oracle出现了账户被锁定的情况. 请了百度君出来卸载一下,问题已解决. 在cmd下:sqlplus /nolog 然后:以dba身份登录:conn /as sysdba 解锁: alter user testuser(需要解锁的账户)account unlock; 搞定! 在这里,可能是我修改数据库密码后,没有关闭连接数据库的程序,直接导致了连接的密码错误次数多余10次以上造成的. 登录oracle数据库提示账户锁定解决方法

解决EntityFramework数据库无法自动迁移解决方法

解决EntityFramework数据库无法自动迁移解决方法 如果在迁移数据库执行完一下三个命令没有成功的话请按下面的步骤去进行数据库迁移 1:Enable-Migrations 2:Add-Migration Student. 3:update-database 一般执行以上3个命令都会成功 第一步:删除迁移命令生成的文件夹:Migrations文件夹,重新生成 第二步:执行迁移命令: Add-Migration ,例如:有一个Student的实体类(Model) 为了命名规范,我们一般执行迁

sqlserver日志文件太大解决方法

SQL Server 的事务日志意外增大或充满的处理方法 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf. 在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展. 一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发. 然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满.通常,在事务日

MSSQL数据库已满的解决方法

当前的解决方法是:把硬盘上的其他文件删除,以空出硬盘空间,将数据库的日志文件大小改成无限制,然后分离数据库,要确保分离成功,.然后把数据库日志文件删除(最好是先改名,以防万一).再附加数据库,这样会重建日志文件. 加回去之后,将数据库改成自动收缩,把日志文件改成按mb增长,增长最大设为一个固定的值,值的大小看数据处理情况,存在大指的update操作的话,应设为大一点. 在查询分析器上操作: 清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 截断事务日志: BACKUP L

oracle数据库ORA-01654 错误的解决方法

引言: 数据库突然报: ORA-01654: unable to extend index BO.INDEX_indexname by 311072 in tablespace 错误,上网查原因,发现解决方法只有一个,就 是增加tablespace的大小.现归纳解决此问题的方法如下. 方法1: 当出现类似错误时,首先检查tablespace的空间是否足够大,如果不够大,说明tablespace的空间不够扩展了,这时候需要将tablespace的datafile的 size变大,方法很简单我就不讲

plsql 数据库密码过期的解决方法

最近在登录plsql时,提示your password has experied, 要求让修改数据库密码.以下是解决方法: 1. 在登录plsql的时候,用 sys sys , 注意修改连接为:sysdba 2.找到users 3.找到你的用户名, 点击右键,编辑, 在弹出的窗口中,口令处输入密码,原来的密码,也可以, 4.输入后,点击应用即可