微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 求助!数据库’tempdb’的日志文件已满.备份数据库的事务日志以释放一些日志空间

我们正在运行sql Server 2000.在我们的数据库中,我们有一个“订单”表,大约有750,000行.我们可以在这个表上执行简单的SELECT语句.但是,当我们想要运行SELECT TOP 100 * FROM Orders ORDER BY Date_Ordered DESC之类的查询时,我们收到以下消息:

Error: 9002,Severity: 17,State: 6
The log file for database ‘tempdb’ is
full. Back up the transaction log for
the database to free up some log
space.

我们的数据库中有其他表,这些表的大小与表中的记录数量相似(即700,000条记录).在这些表中,我们可以运行任何我们想要的查询,并且我们从未收到有关’tempdb full’的消息.

为了解决这个问题,我们已经备份了数据库,缩小了实际的数据库,并缩小了tempdb系统数据库中的数据库文件,但这还没有解决问题.

我们的日志文件的大小设置为自动增长.

我们不确定下一步该去哪里.有什么想法我们仍然可能收到这条消息吗?

Error: 9002,State: 6
The log file for database ‘tempdb’ is
full. Back up the transaction log for
the database to free up some log
space.

解决方法

根据 this article,如果排序需要的内存比sql Server分配的内存多,则使用临时数据库.

如果对未编制索引的列进行排序,则数据库服务器将执行全表扫描并跟踪表中所有记录的所有Date_Ordered值(和主键值).

在Orders.Date_Ordered上创建一个INDEX,以加快排序并减少内存使用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐