VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4559|回复: 29

|M| 我的数据库的日志一下子就满了,怎么办啊

[复制链接]

1

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-18 01:40:01 | 显示全部楼层 |阅读模式
数据库 'cnepa' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。
每两天就这样
可不可不要日志文件的啊
或者让SQL数据库每两个小时就压一次

要怎么办啊头都大了日志疯涨
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-23 13:18:01 | 显示全部楼层
限制日志增加..

根据书上说,数据库操作一次,日志就有可能记录N条.
回复

使用道具 举报

0

主题

119

帖子

67.00

积分

新手上路

Rank: 1

积分
67.00
发表于 2020-1-23 16:27:01 | 显示全部楼层
也可以清空或者转储!
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-23 17:00:02 | 显示全部楼层
lz可以每天备份一次日志文件,然后压缩,这些都可以做成作业自动运行
如果其实不需要日志文件的话,可以把数据库的故障还原模型改为简单,文件增长方式改为按M而不是百分比
回复

使用道具 举报

0

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-23 17:54:01 | 显示全部楼层
限制硬盘增长;扩大硬盘容量
回复

使用道具 举报

0

主题

7

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-1-23 19:18:02 | 显示全部楼层
不要日志就像"jccg1124 "说的以 把数据库的故障还原模型改为简单
回复

使用道具 举报

0

主题

4

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-23 20:36:02 | 显示全部楼层
备份吧,就可以清除日志的
回复

使用道具 举报

0

主题

29

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-1-24 19:18:01 | 显示全部楼层
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_backupdb]
GO
create proc p_backupdb
@dbname sysname='',   --要备份的数据库名称,不指定则备份当前数据库
@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
@bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
@appendfile bit=1   --追加/覆盖备份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
  ,'\DATE\',convert(varchar,getdate(),112))
  ,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
  +' to disk='''+@bkpath+@bkfname
  +''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
  +case @appendfile when 1 then 'NOINIT' else 'INIT' end
print @sql
exec(@sql)
go


--备份当前数据库
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_db.bak'
--差异备份当前数据库
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'
--备份当前数据库日志
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'
回复

使用道具 举报

0

主题

29

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-1-24 19:27:01 | 显示全部楼层
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_backupdb]
GO
create proc p_backupdb
@dbname sysname='',   --要备份的数据库名称,不指定则备份当前数据库
@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
@bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
@appendfile bit=1   --追加/覆盖备份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
  ,'\DATE\',convert(varchar,getdate(),112))
  ,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
  +' to disk='''+@bkpath+@bkfname
  +''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
  +case @appendfile when 1 then 'NOINIT' else 'INIT' end
print @sql
exec(@sql)
go
回复

使用道具 举报

0

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-25 10:45:01 | 显示全部楼层
清除,隔段时间就要清除.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表