Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 共享主机中的“日志备份”导致数据库的事务日志已满_Asp.net_Sql Server_Asp.net Mvc_Database - Fatal编程技术网

Asp.net 共享主机中的“日志备份”导致数据库的事务日志已满

Asp.net 共享主机中的“日志备份”导致数据库的事务日志已满,asp.net,sql-server,asp.net-mvc,database,Asp.net,Sql Server,Asp.net Mvc,Database,我有一个Asp.NETMVC5网站,在共享托管计划中采用EntityFrameworkCodeFirst方法。它使用开源的控制面板,其SQL Server面板有一定的局限性。今天,当我想编辑数据库时,遇到了以下错误: The transaction log for database 'db_name' is full due to 'LOG_BACKUP' 我四处搜索,找到了很多相关的答案,比如and或,但问题是他们建议在数据库上运行查询。我试着跑步 db.Database.ExecuteSq

我有一个Asp.NETMVC5网站,在共享托管计划中采用EntityFrameworkCodeFirst方法。它使用开源的控制面板,其SQL Server面板有一定的局限性。今天,当我想编辑数据库时,遇到了以下错误:

The transaction log for database 'db_name' is full due to 'LOG_BACKUP'
我四处搜索,找到了很多相关的答案,比如and或,但问题是他们建议在数据库上运行查询。我试着跑步

db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");
使用HomeController上的visual studio,但出现以下错误:

System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.

我怎样才能解决我的问题?我应该联系对我的主机来说有点糟糕的支持团队,还是我可以自己解决这个问题?

给您的主机公司打电话,让他们设置定期日志备份,或者将恢复模式设置为简单。我相信你知道是什么决定了你的选择,但我还是要说清楚。如果需要恢复到任意时间点,请将恢复模式设置为“完全”。无论哪种方式,数据库的配置都是错误的。

由于日志备份,事务日志已满,因此会发生此错误。因此,您无法对此数据库执行任何操作,在这种情况下,SQL Server数据库引擎将引发9002错误

要解决此问题,您应该执行以下操作

进行完整的数据库备份。 收缩日志文件以减小物理文件大小。 创建日志备份。 创建日志备份维护计划,以便经常备份日志。
我写了一篇文章,详细介绍了有关此错误的所有信息以及如何解决此错误。在

中,我收到了相同的错误,但来自后端作业SSIS作业。检查数据库的日志文件增长设置后,日志文件的增长限制为1GB。因此,当作业运行时,它要求SQL server分配更多日志空间,但日志的增长限制下降导致作业失败。我修改了日志增长并将其设置为50MB和无限增长,错误消失了

除了Ben的答案,您还可以根据需要尝试以下查询

USE {database-name};  
GO  
-- Truncate the log by changing the database recovery model to SIMPLE.  
ALTER DATABASE {database-name}
SET RECOVERY SIMPLE;  
GO  
-- Shrink the truncated log file to 1 MB.  
DBCC SHRINKFILE ({database-file-name}, 1);  
GO  
-- Reset the database recovery model.  
ALTER DATABASE {database-name}
SET RECOVERY FULL;  
GO 
更新信用@cema sp

要查找数据库文件名,请使用下面的查询

select * from sys.database_files;

有时,当磁盘空间不足时,update SQL语句失败时,会返回“log\U BACKUP”导致数据库XXXXXXXXX的事务日志已满的消息。
检查磁盘空间:

当日志文件的大小受到限制时,也会发生这种情况

在对象资源管理器中右键单击数据库

选择属性

选择文件

在日志行上,单击“自动增长/Maxsize”列中的省略号

更改/验证最大文件大小是否不受限制


更改为“无限”后,数据库恢复了活力。

在没有事务的情况下执行ALTER。@usr我该怎么做?这是数据库问题,缩小数据库可能会起作用。请DBA在这方面帮助您。您一定以某种方式打开了一个事务。我不知道,也许EF会自动这么做。您需要对EF和事务进行一些研究。或者,从SSMS执行此操作。或者,使用原始ADO.NET。也许你的主人无论如何都不会允许这种说法,他们需要更频繁地发布日志备份。谢谢。我想自己做这件事,但也联系了他们,他们已经设置了恢复,并在数据库上运行了一个心理医生。另外,我不需要恢复,所以我告诉他们将其设置为简单模式。这说明了如何将恢复模式设置为简单模式!将错误消息发布为您的答案一点帮助都没有。在StackOverflow上,只链接的答案也不受欢迎。您应该从链接中提取相关文本并在此处引用。这一点在将来链接死亡的情况下尤其重要,因为所有链接都不可避免地会这样做;有没有一种方法可以在sql server实例的基础上实现这一点,以便它适用于所有DBs?我可以确认这是一种有效的方法。应该是公认的答案。谢谢@Mohit Dharmadhikari;我尝试了许多其他的方法,包括分配更多的磁盘空间,增加日志文件大小,但是在我首先收缩现有的日志文件之前,一切都不起作用。我相信{database file name}将等同于日志行的name列,在这个查询中:select*from sys.database_files我尝试了这个方法,但从未更改为unlimited。如何添加另一个日志文件?@JoseCabreraZuniga这不会改变任何事情。无限是2TB。