磁盘空间不足后,ASP.Net 应用程序无法再写入数据库

磁盘空间不足后,ASP.Net 应用程序无法再写入数据库

我是一名软件开发人员,正在解决客户生产服务器上的一个棘手问题,但我遇到了一点问题。

他们有一个运行 Windows Server 2008、SQL Server 2008 R1 和 IIS7 的虚拟服务器。它配置了两个分区:一个分区装有操作系统(约 15 GB),另一个分区装有 IIS 网站(另一个约 15 GB)。

运行此服务器的应用程序一直运行良好,直到大约一小时前,它开始抛出 System.IO.IOException:“磁盘空间不足”。

客户通知我后,我立即清理了 C:\ 上的一些空间,清空了回收站,并重新启动了 SQL Server 和 IIS。Web 服务器恢复了,应用程序正在运行,但它不再将信息保存到数据库。没有出现错误消息,应用程序可以从数据库中获取信息,但无法再将数据保存回数据库中。我重新启动了服务器,但没有任何效果。

我与托管公司的系统管理员进行了交谈,他说 SQL Server 似乎运行正常,并且数据库不处于只读模式。我确认了这一点,因为我可以从 SQL Server Management Studio 向表中添加记录。

在尝试在应用程序中保存已编辑的记录后,我立即查看了事件日志,但其中没有出现任何我可以发现的新事件。

我假设这是与空间不足有关,因为在此之前一切都运行良好,但我有点不知道到底需要什么才能再次运行。

有人能帮帮我吗?这到底是怎么回事?

编辑:我有该服务器的完全访问权限。

编辑:数据库和日志文件本身看起来不错,因为我将它们拉到我的工作站来运行一些需要在一天结束前完成的处理。数据在我的计算机上毫无问题地写入了数据库。

答案1

查看数据库的数据和日志文件大小(或让管理员查看)以及它们的分配方式。您可以设置数据和日志文件的最大大小,也可以将它们设置为根据需要按固定量或当前大小的百分比自动增长。在我看来,其中一个或另一个或两者未设置为自动增长,并且您已将文件大小设为最大值。

编辑:
尝试重新启动运行应用程序的应用程序池。或者完全重新启动 IIS。

答案2

我无法解释解决方案,但以下是我今天早上做的两项事情:

  1. 昨晚,我获取了数据库的副本并将其传输到本地计算机,以针对该数据库运行一些日常所需的进程。今天早上,我将其传输回服务器,并用这个新副本替换了服务器的数据库,以确保在继续进行故障排除之前它拥有所有最新数据;

  2. 今天早上,我还用我的档案中的备份版本更新了我的申请副本。

然后我开始运行更多测试,并将其再次保存到数据库中。

感谢大家的建议!

相关内容