如何从SQL Server 2008中删除.ldf文件?

sha*_*ane 35 sql-server sql-server-2008

提前致谢

如果我停止SQL-server然后将.LDF文件(transactionlog文件)删除到数据库,会发生什么?将数据库标记为可疑还是SQL-server会自动创建新的?SQL Server 2008 R2和我的.LDF文件大小太大,所以如何管理它,我是否可以收缩它或删除查询表单中的Plz Suggest

谢谢

Ale*_*lex 46

您不应删除任何数据库文件,因为它可能严重损坏您的数据库!

如果磁盘空间不足,则可能需要将数据库拆分为多个部分.这可以在数据库的属性中完成.因此,您可以将数据库的每个部分放到不同的存储卷中.

如果使用以下命令将恢复模式从完全更改为简单,也可以缩小事务日志文件:

ALTER DATABASE myDatabase SET RECOVERY SIMPLE
DBCC SHRINKDATABASE (myDatabase , 5)
Run Code Online (Sandbox Code Playgroud)

也可以切换回完全恢复:

ALTER DATABASE myDatabase SET RECOVERY FULL
Run Code Online (Sandbox Code Playgroud)

有关SHRINKDATABASE的更新 - 或在回答此问题时我不知道的内容:

虽然上面的方法摆脱了一些未使用的空间,但它在数据库文件(MDF)上有一些严重的缺点 - 它会损坏索引,因为它们会破坏索引,从而恶化数据库的性能.因此,您需要在之后重建索引以消除shrink命令导致的碎片.

如果只想缩小日志文件,可能只想使用SHRINKFILE.我从MSDN复制了这个例子:

USE AdventureWorks2012;
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE AdventureWorks2012
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (AdventureWorks2012_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE AdventureWorks2012
SET RECOVERY FULL;
GO
Run Code Online (Sandbox Code Playgroud)


Arm*_* G. 29

不要冒险手动删除LDF文件!如果您不需要事务文件或希望将它们缩小到您选择的任何大小,请按照下列步骤操作:(注意这会影响您的备份,因此请务必先执行此操作)

  1. 右键单击数据库
  2. 选择属性
  3. 单击"选项"选项卡.
  4. 将恢复模型设置为SIMPLE
  5. 接下来,选择FILES选项卡
  6. 现在确保选择LOG文件并向右滚动.在"Autogrowth"标题下点击点....
  7. 然后禁用自动增长(这是可选的,将限制额外的增长)
  8. 然后单击"确定"并将"初始大小"设置为您希望的大小(我将其设置为20MB)
  9. 单击"确定"以保存更改
  10. 然后再次右键单击该数据库,选择"任务>收缩>数据库",按"确定".
  11. 现在比较你的文件大小!:)


Nic*_*icy 19

我做到了

  • 分离数据库(包括Drop Connections)
  • 删除*.ldf文件
  • 附加数据库,但删除预期的*.ldf文件

对于SQL 2012中的4个不同的数据库,我应该对SQL 2008是相同的

  • 为你+1!我不知道为什么人们会忽视这个问题并像对待孩子一样对待你(例如那些答案"不要这样做,因为它很危险").我从客户那里收到SAMPLE和TEST DB.我只需要临时访问他们的数据.有时他们有一个40或50 Gb的LDF文件!我不关心恢复这个数据库,我只需要摆脱我硬盘中的那些40 Gb! (15认同)
  • 这就是我一直在寻找的答案,也是我登陆此页面的原因。谢谢 (2认同)

Dal*_*lex 5

正如您可以阅读注释一样,删除日志并不是一个好方法.但是,如果您确定不会丢失任何内容,则可以将数据库恢复模式更改为简单,然后再使用

DBCC shrinkdatabase ('here your database name')

清除你的日志.

您可以做的最糟糕的事情是从磁盘中删除日志文件.如果服务器在服务器停止时有未完成的事务,那么这些事务在重新启动后将不会回滚,并且您将获得损坏的数据.

  • dbcc shrinkdatabase太大了.如果您只想缩小一个文件,请使用dbcc shrinkfile (2认同)