SQL Server 2008 日志文件具有最小大小,是什么使它们变小以及如何使它们变小?

jco*_*and 7 sql-server-2008 sql-server shrink logs

好的,首先,我在创建数据库时搞砸了,使用的创建脚本大致如下:(用于包装目的的人工换行符和名称/路径)

CREATE DATABASE [EXAMPLE] ON  PRIMARY 
( NAME = N'EXAMPLE_Data', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.mdf', 
    SIZE = 446046KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
 LOG ON 
( NAME = N'EXAMPLE_Log', FILENAME = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.ldf', 
    SIZE = 664505KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
Run Code Online (Sandbox Code Playgroud)

因为我从现有的开发数据库中编写了它的脚本,我只是想让一些事情发生。当我没有将大小更改为合理的大小(例如4096KB)时,我搞砸了,所以现在我无法将日志文件缩小到大约 600MB 以下。

我知道我哪里出错了,但是如何轻松修复它?

Mar*_*icz 7

  1. 分离数据库。

    sp_detach_db @dbname = 'EXAMPLE'

  2. 从磁盘物理删除日志文件(这很重要,但可能有风险 - 请参阅下面的mrdenny评论)。

  3. 使用sp_attach_single_file_db存储过程附加数据库。

    sp_attach_single_file_db @dbname = 'EXAMPLE', @physname = N'J:\SQLServer2008\MSSQL.INSTANCE\EXAMPLE.mdf'

  • 如果您分离数据库并删除事务日志文件,则数据库可能不会重新附加到数据库引擎。数据库中的数据也可能不一致,因为数据库日志文件中可能存在尚未从事务日志刷新到数据文件的事务在进行中。 (4认同)

Cod*_*awk 5

希望您有足够的权限来访问 SSMS。如果这样做,请按照以下步骤操作

  1. 打开 SSMS
  2. 连接到您的 SQL Server Instacne
  3. 打开对象资源管理器,右键单击数据库(要缩小日志文件的最小大小)并选择“属性”
  4. 从“属性”窗口 - 选择“文件”
  5. 您将在右下角看到数据库文件网格
  6. 点击添加添加新的日志文件,给
    • 逻辑名称
    • 文件类型 = 日志
    • 初始大小 = 1 MB(或您的偏好)
    • 单击自动增长并相应地设置首选项
    • 文档名称
  7. 现在单击现有的日志行并选择“删除”
  8. 就是这样!现在您有了所需最小大小的新日志文件。

替代文字