MDF、LDF文件过大

USE [IVMS8100]
GO
/****** Object:  StoredProcedure [dbo].[ClearMemory]    Script Date: 04/13/2010 14:28:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/***start***/
----强制释放内存
CREATE PROCEDURE [dbo].[ClearMemory]
AS
BEGIN
--清除所有缓存
DBCC DROPCLEANBUFFERS  
--打开高级配置  
EXEC sp_configure 'show advanced options', 1
----设置最大内存值,清除现有缓存空间
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE')
--设置等待时间
WAITFOR DELAY '00:00:01'
--重新设置最大内存值
EXEC  sp_configure 'max server memory', 4096
EXEC ('RECONFIGURE')
--关闭高级配置
EXEC sp_configure 'show advanced options',0
END
/***end***/
复制代码

 


 MDF、LDF文件过大导致访问慢的问题:

  还有一种情况是,虽然可以继续访问数据库,但是非常慢。查看MDF(Master Database File)和LDF(Log Database File)文件比较大。

  产生原因:

  1. 索引碎片过多;
  2. 频繁的DB操作,如果临时表和存储过程未及时清理;
  3. 异常状况下,占用的DB空间未释放。

  解决方案:

  1. 磁盘整理。或者升级系统,单磁盘转磁盘阵列;
  2. 分多个数据库;
  3. 重建DB,将其分为多个文件组,存放不同的表,并将文件组存放在不同的磁盘中;
  4. 重建DB索引;
  5. 收缩MDF、LDF。

其中,以上解决方案中最易实现、最容易的就是收缩MDF和LDF文件。

网上有很多图文并茂的操作方式,就不再赘述。有操守的程序员还是应该给出可执行的SQL代码来。

以下给出的例子适合在SQL Server 2008上运行。有很多SQL Server 2005和SQL Server 2000的例子现在已经没意义了!

以下代码数据库名称为“IVMS8100v3”,请审阅:

复制代码
--收缩MDF:
DBCC SHRINKFILE ('IVMS8100v3',1)

--收缩LDF:
USE [master]
GO
ALTER DATABASE IVMS8100v3 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE IVMS8100v3 SET RECOVERY SIMPLE --简单模式
GO
USE IVMS8100v3
GO
DBCC SHRINKFILE (N'IVMS8100v3_log' , 11, TRUNCATEONLY)

GO

USE [master]
GO
ALTER DATABASE IVMS8100v3 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE IVMS8100v3 SET RECOVERY FULL --还原为完全模式
GO
复制代码
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值