ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL SERVER TEMPDB滿的處理

SQL SERVER TEMPDB滿的處理

原创 Linux操作系统 作者:sanxiagirl 时间:2009-05-22 11:52:22 0 删除 编辑

现象:

进行查询等操作时,提示““The log file for database 'tempdb' is full.Back up the transaction log for the database to free up some  log  space.

进入企业管理器查看,database下显示no items,看不到任何数据库信息。

使用查询分析器
     use tempdb
     select * from tempdb.dbo.sysfiles

可以看到tempdb数据文件和日志文件信息,发现这两个档都在C盘。查看C盘发现只剩下700M空间,而tempdb 日志文件是10%增长,不限制增长大小,目前已有20G。按目前大小,一次增长10%,需要2G,而C盘剩余空间不足2G,不够扩展。

 

考虑以下几种解决方案:

解决方案1重启SQL SERVER,会自动释放资源。因为重启SQL SERVER时,会重构tempdb数据库,即:tempdb数据库中的数据全部丢失。如果tempdb中有大量数据的话,也要备份后重启。

2增加一个日志文件到其它盘

Alter database tempdb add log file ( NAME='templog1', FILENAME ='d:\SQLDATA\tempdb_log_1.ldf')  

3tempdb数据库的日志文件改大一点,如果日志文件所在的磁盘空间足够的话。(适用于限制档大小的情况)  
  USE   master  
  GO  
  ALTER   DATABASE   tempdb    
  MODIFY   FILE  
        (NAME   ='templog',  
        SIZE   =   XXXX)  
  GO

4清空日志

dump transaction tempdb with no_log
dbcc shrinkfile ('templog',1)

执行完后,我们可以再通过sp_helpdb tempdb查看一下tempdb状态。如果tempdb可用的话,我们就可以在企业管理器中看到DATABASE信息,也可以执行增删查改动作了。

 

数据文件和日志文件放在系统盘下不太好,我们可以将tempdb的数据文件和日志移到D盘下面:

Use master

Alter database tempdb modify file (NAME='TEMPDEV',FILENAME='D:\SQLDATA\TEMPDB.MDF');

GO

Alter database tempdb modify file (NAME='TEMPLOG',FILENAME='D:\SQLDATA\TEMPLOG.LDF');

GO

 

The file "TEMPDEV" has been modified in the system catalog. The new path will be used the next time the database is started.

The file "TEMPLOG" has been modified in the system catalog. The new path will be used the next time the database is started.

 

关闭SQL SERVER

C盘下面的文件移到目标文件夹

开启SQL SERVER

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10640532/viewspace-600822/,如需转载,请注明出处,否则将追究法律责任。

下一篇: insert引起的死锁
请登录后发表评论 登录
全部评论

注册时间:2008-01-02

  • 博文量
    142
  • 访问量
    500579