TFS:TF30042 数据库已满 处理方法

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 原文: TFS:TF30042 数据库已满 处理方法 今天早上,公司打来电话,说TFS(Team Foundation Server)微软源代码管理软件签入不了,报错:TF30042 数据库已满。
原文: TFS:TF30042 数据库已满 处理方法

今天早上,公司打来电话,说TFS(Team Foundation Server)微软源代码管理软件签入不了,报错:TF30042 数据库已满。



经过差不多半个小时的处理,基本上好了,再次总结一下:

根据提示,我先检查磁盘空间,发现都有几十G(公司的TFS数据库比较大,光压缩备份就有20G以上),足够用来备份。

检查完硬盘空间后,接着检查数据库空间,发现日志文件的确满了,按照常规思路,做了一次日志备份。正常来说,这已经能清空日志了。但是发现还是不行。为此也头疼了一下。看看恢复模式,是完整的,然后我就换成大容量日志,其实这一步我觉得有点多余,因为作为源代码管理,频繁签出签入是很正常,但是几乎没有大容量插入的,所以换这个模式作用不大,只是作为“试探性”的动作而已。

后来看到网上的提示说检查一下SQLServer的错误日志,再次说明一下,很多DBA书籍上对问题检查都是这样的顺序:1、检查windows错误日志;2、检查SQLServer的错误日志然后再去做对应的处理。我由于经验不足,直接跳过了,反倒是问题处理延缓了。在检查了错误日志后,的确发现一些有用信息:


根据【消息】,我去数据库用以下代码查询:

SELECT name, log_reuse_wait_desc FROM sys.databases  where 
log_reuse_wait_desc = 'Replication'

发现只有一条记录,就是我的TFS数据库:Tfs_HKITCollection。然后到MSDN上查。发现Replication这个状态是因为还原了某些发布的数据库或者没有正确移除而导致的,而我的服务器上没有任何复制数据库,但在我接手之前我就不清楚了。还是先解决问题

执行:

sp_removedbreplication '指定数据库'

根据联机丛书对这个存储过程的解释:
只有当其他删除复制对象的方法都失败后,才应当使用此过程。

执行完后,在查询上面的语句:
SELECT name, log_reuse_wait_desc FROM sys.databases  where name='Tfs_HKITCollection'

发现log_reuse_wait_desc这一列已经变回log backup,证明处理成功,然后我再做一次日志备份。数据库TFS就可以访问了。
到此为止,问题算是处理完毕。另外,如果有必要,可以收缩一下数据库。

补充一些相关知识:
--检查当前数据库是否可以用于复制,1 = TRUE,0 = FALSE,可以更改DB_NAME()来检查其他数据库。2008之前不知道可否使用。
SELECT DATABASEPROPERTYEX ( DB_NAME() , 'IsPublished' )

至于复制,超过本文范围,本文主要记录处理心得,希望有同样情况的人能得到解决,也作为自己的一个记录。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
安全 网络安全 数据库
达梦数据库 忘记 SYSDBA 密码 处理方法
达梦数据库支持四种安全验证模式:数据库身份验证、基于操作系统的身份验证、外部身份验证和UKEY验证。当忘记SYSDBA密码时,可通过启用操作系统认证模式来恢复:修改`dm.ini`配置文件启用`ENABLE_LOCAL_OSAUTH = 1`,重启服务后,使用`disql / as sysdba`登录修改密码。之后,禁用操作系统认证,恢复原验证模式,确保数据库安全。
1594 0
|
7月前
|
安全 关系型数据库 MySQL
QL数据库root账户密码忘记两种处理方法(保有效)
QL数据库root账户密码忘记两种处理方法(保有效)
|
Oracle 关系型数据库 Linux
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
1178 0
Oracle 数据库设置最大进程数参数方法,oracle最大进程数满了处理方法,sysdba管理员登录报“maximum number of processes (150) exceeded“问题解决
|
关系型数据库 MySQL 数据库
MySQL 切换数据库、用户卡死:“You can turn off this feature to get a quicker startup with -A“处理方法
MySQL 切换数据库、用户卡死:“You can turn off this feature to get a quicker startup with -A“处理方法
887 0
|
SQL 数据库
解决SQL数据库日志已满的问题
解决SQL数据库日志已满的问题
212 0
|
Web App开发 数据库连接 C#
数据库连接字符串的处理方法!加密解密连接字符串。
数据库连接字符串的处理应该是一个项目里最基础的东东了。(除非你的项目不涉及到数据库。) 千万不要小看他,处理不好也时会给你带来不少的麻烦的。 连接字符串的内容在这里就不讨论了,这里主要说一下他的存放位置和读取方法。
1374 1
下一篇
DataWorks