缩小sql server数据库日志文件,限制sql server数据库日志文件的大小

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 由于经常和数据库打交道,经常见到在客户的机器上,SQL server数据库日志文件的大小,远远超过于数据库数据文件的大小,客户用的都是一些服务器,磁盘空间有的是,当然不在乎这点文件,可以,当客户要求查找一些数据的时候,就不得不备份客户的数据库,经常是备份回来的数据库,无法还原,原因就是我的PC上没有这么大的空间来还原,无奈啊, 只有把客户的数据库日志缩小一下了,于是从网上找了以下代码,可以收

由于经常和数据库打交道,经常见到在客户的机器上,SQL server数据库日志文件的大小,远远超过于数据库数据文件的大小,客户用的都是一些服务器,磁盘空间有的是,当然不在乎这点文件,可以,当客户要求查找一些数据的时候,就不得不备份客户的数据库,经常是备份回来的数据库,无法还原,原因就是我的PC上没有这么大的空间来还原,无奈啊,

只有把客户的数据库日志缩小一下了,于是从网上找了以下代码,可以收缩数据库日志,我执行了一下,日志缩小的,不过有一个错误产生,还没来的急分析,先不管他,达到目的才是硬道理

 


SET  NOCOUNT  ON
DECLARE   @LogicalFileName  sysname,
@MaxMinutes   INT ,
@NewSize   INT


USE  bbbbb  --  要操作的数据库名
SELECT   @LogicalFileName   =   'bbbbb _Log ' --  日志文件名
@MaxMinutes   =   100 --  数据库操作的超时上限.
@NewSize   =   100   --  你想设定的日志文件的大小(M)

--  Setup / initialize
DECLARE   @OriginalSize   int
SELECT   @OriginalSize   =  size
FROM  sysfiles
WHERE  name  =   @LogicalFileName
SELECT   ' Original Size of  '   +   db_name ()  +   '  LOG is  '   +
CONVERT ( VARCHAR ( 30 ), @OriginalSize +   '  8K pages or  '   +
CONVERT ( VARCHAR ( 30 ),( @OriginalSize * 8 / 1024 ))  +   ' MB '
FROM  sysfiles
WHERE  name  =   @LogicalFileName
CREATE   TABLE  DummyTrans
(DummyColumn 
char  ( 8000 not   null )


DECLARE   @Counter   INT ,
@StartTime   DATETIME ,
@TruncLog   VARCHAR ( 255 )
SELECT   @StartTime   =   GETDATE (),
@TruncLog   =   ' BACKUP LOG  '   +   db_name ()  +   '  WITH TRUNCATE_ONLY '

DBCC  SHRINKFILE ( @LogicalFileName @NewSize )
EXEC  ( @TruncLog )
--  Wrap the log if necessary.
WHILE   @MaxMinutes   >   DATEDIFF  (mi,  @StartTime GETDATE ())  --  当操作未超时
AND   @OriginalSize   =  ( SELECT  size  FROM  sysfiles  WHERE  name  =   @LogicalFileName AND  ( @OriginalSize   *   8   / 1024 >   @NewSize
BEGIN   --  Outer loop.
SELECT   @Counter   =   0
WHILE  (( @Counter   <   @OriginalSize   /   16 AND  ( @Counter   <   50000 ))
BEGIN   --  update
INSERT  DummyTrans  VALUES  ( ' Fill Log ' )
DELETE  DummyTrans
SELECT   @Counter   =   @Counter   +   1
END
EXEC  ( @TruncLog )
END
SELECT   ' Final Size of  '   +   db_name ()  +   '  LOG is  '   +
CONVERT ( VARCHAR ( 30 ),size)  +   '  8K pages or  '   +
CONVERT ( VARCHAR ( 30 ),(size * 8 / 1024 ))  +   ' MB '
FROM  sysfiles
WHERE  name  =   @LogicalFileName
DROP   TABLE  DummyTrans
SET  NOCOUNT  OFF
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
68 6
|
3天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
8 0
|
5天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
SQL 数据库 索引
Sqlserver与access数据库sql语法十大差异
ACCESS结构简单容易处理,而且也能满足多数的网站程序要求,也是初学者的试牛刀。ACCESS是小型数据库,既然是小型就有他根本的局限性: 1)、数据库过大,一般ACCESS数据库达到50M左右的时候性能会急剧下降! 2)、网站访问频繁,经常超过100人的在线时,处理速度会有影响! 3)、记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降!微软公司为了与ACCESS高低搭配的一种高端方案:改用了Sqlserver,但语法会有一些差异。
935 0
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
2月前
|
SQL 算法 数据库
【数据库SQL server】关系数据库标准语言SQL之数据查询
【数据库SQL server】关系数据库标准语言SQL之数据查询
95 0
|
18天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
16 0
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
12天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
17 1