我们有一个TFS2010环境。这个规模现在每周都在增长很长一段时间。
我们删除了很多旧的分支和团队项目。我们还使用测试附件清洁器来完成像Brian Harry在他的帖子中所说的几个项目。 http://blogs.msdn.com/b/bharry/archive/2011/10/31/tfs-databases-growing-out-of-control.aspx
数据库没有变小。我也尝试过多次使用destroy命令,但没有任何帮助。
我检查了我能想到的每个日志,但找不到任何关于它的错误。
有人提出建议吗?
由于
使用评论中询问的查询结果进行编辑:
TableName SchemaName RowCounts TotalSpaceKB UsedSpaceKB UnusedSpaceKB FieldsDataArchive dbo 0 0 0 0 tbl_AuditLog dbo 41710 5168 3800 1368 tbl_AuthorizationUpdateLock dbo 1 16 16 0 tbl_BuildOutput dbo 0 0 0 0 tbl_BuildServerProperties dbo 1 16 16 0 tbl_BuildSqlNotification dbo 124445 8432 6544 1888 tbl_Counter dbo 3 16 16 0 tbl_LastChangeId dbo 1 16 16 0 tbl_Replication dbo 1 16 16 0 tbl_Repository dbo 1 16 16 0 TempADObjectMemberships dbo 0 0 0 0 TempADObjects dbo 0 0 0 0 Templates dbo 7 41328 41280 48
答案 0 :(得分:1)
您的案例中的大多数磁盘空间将由事务日志文件使用,而不是数据文件。
上面的查询仅显示数据文件使用的磁盘空间。
如果有可用空间,您可以查看缩小事务日志。
答案 1 :(得分:1)
在查看TFS数据库的事务日志的不合理增长之后 我无法找到增长的确切原因,也无法控制自动收缩日志。
Similar solution without the full database backup
我在非生产服务器上尝试了几天这个脚本,并且只在我切换到生产服务器之后。
在SQL Server 2012上进行破坏& TFS 2015
以下脚本会自动缩小事务日志。
使用SQL job
完全备份后运行此脚本脚本部分:
1)断开与特定数据库的所有连接
2)将备份模型切换为简单
3)将数据库日志大小设置为无限
4)将日志文件缩小到200mb(或任何你想要的大小)
5)将最大尺寸设置为50000(或您希望的任何尺寸)
6)将备份模型设置为完整
140GB数据库上的脚本运行大约需要3-5秒
USE [master]
GO
ALTER DATABASE [Tfs] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [Tfs] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [Tfs] MODIFY FILE ( NAME = N'Tfs_log', MAXSIZE = UNLIMITED)
GO
USE [Tfs]
GO
DBCC SHRINKFILE (N'Tfs_log' , 200)
GO
ALTER DATABASE [Tfs] MODIFY FILE ( NAME = N'Tfs_log', MAXSIZE = 50000)
USE [master]
GO
ALTER DATABASE [Tfs] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [Tfs] SET MULTI_USER
GO
答案 2 :(得分:0)
我遇到类似问题时发现的另一个建议是通过将表的恢复模式更改为“简单”来防止LDF文件重新生成。
首先,缩小LDF文件。我是使用SQL管理工作室完成的。
收缩数据库并确保TFS仍然有效后,请按照此处的说明进行操作:stop-sql-server-transaction-log-ldf-files-from-growing-indefinitely。
这将导致SQL Server减少保存到事务日志中的恢复数据量,这样您就不必每X个月重复一次收缩操作。