sql-server - 为数据库 'MyDB' 设置脱机失败

标签 sql-server database

我的程序因这个异常而失败:

System.Data.SqlClient.SqlException: 
The transaction log for database 'MyDB' is full. 
To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

我注意到我的表没有在 SQL Management Studio 中加载,而且我无法打开数据库属性窗口

The Error when I try open Property window

然后我尝试通过以下语句将我的日志文件更改为自动增长:

 ALTER DATABASE MyDB
 MODIFY FILE
 (NAME=MyDB_Log,MAXSIZE=2TB,FILEGROWTH=20MB);

这条语句执行成功但没有帮助我恢复我的数据库 然后我尝试设置离线 MyDB 操作因某些异常而失败 然后我将数据库设置为单用户模式但异常仍然存在 然后我试试这个语句:

ALTER DATABASE MyDB SET EMERGENCY;
GO
ALTER DATABASE MyDB set single_user
GO
DBCC CHECKDB (MyDB, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO
ALTER DATABASE MyDB set multi_user
GO

这条语句在第一行也失败了。

现在我不知道我该怎么办。

最佳答案

按照以下步骤操作。

  • 打开 SQL Management Studio 并连接到您的数据库服务器
  • 右键单击您的数据库
  • 点击属性
  • 单击“选项”链接
  • 将恢复模式设置为简单,如下所示

enter image description here

  • 点击确定
  • 完成后,再次右键单击数据库
  • 点击任务>压缩>文件
  • 在“收缩数据库”窗口中,选择“日志”作为文件类型。文件名作为 databasename_log 显示在文件名下拉列表中,如下所示:

enter image description here

已用空间与已分配空间的对比显示。将恢复模式设置为简单后,事务日志中的大部分空间都已释放。

  • 确保已选中“释放未使用的空间”单选按钮。
  • 单击此窗口上的“确定”以缩小事务日志。

您可能还想通读这篇短文 http://sqlity.net/en/556/t-sql-tuesday-25-%E2%80%93-sql-server-tips-tricks/

关于sql-server - 为数据库 'MyDB' 设置脱机失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17591431/

相关文章:

c# - 可以在 C# 构造函数中调用数据库初始化吗?

html - Postgresql Ltree 查询获取嵌套 json/array 的注释线程并从中构建 HTML

sql - 使用 SQL 搜索字符串中的单词数

sql-server - 如何使用 Node.JS 防止 SQL 注入(inject)?

php - 使用Docker将php 5.5与dblib连接到MSSQL

sql-server - SQL 服务器 : Is it possible to synchronize user GUIDs between two databases if the users are not tied to a login?

java - 如何在不使用 SQL 服务器的情况下实现 Blue J (Java) 的 Access 数据库?

jquery - SQL Server 与 jQuery 和 Node js 的连接

sql - 如何在 SQL Server 中转义单引号?

java - 只需在 BDD (Hibernate) 中插入日期的 "Hour:Minutes"