【问题标题】:SQL Server 2008 log size management problemsSQL Server 2008 日志大小管理问题
【发布时间】:2010-05-08 18:05:12
【问题描述】:

我正在尝试缩小数据库的日志将恢复设置为简单,但无论我尝试什么,都会出现错误。

USE 4_o5;
GO
ALTER DATABASE 4_o5
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (4_o5_log, 10);
GO

sp_helpfile 的输出表明日志文件位于(托管解决方案)下:

I:\dataroot\4_o5_log.LDF

请帮我执行此操作,因为在导入大量数据时日志文件变大,现在不再需要此信息,从那时起有多个(大量)备份。

执行上述查询时的确切错误消息是:

incorrect syntax near '4'.
RECOVERY is not a recognized SET option.
incorrect syntax near _5_log'.

我正在使用 Visual Studio 2010(本地还安装了 SQL Server Express,在提供程序(共享)处正确安装了 SQL Server 2008)

非常感谢

【问题讨论】:

    标签: sql-server sql-server-2008 logfiles


    【解决方案1】:

    做事

    USE [4_o5] --need brackets with this DB name, as marc_s commented
    GO
    DBCC SHRINKFILE (2, 10)
    

    DBCC 还采用内部文件 ID 号,我发现您在区分逻辑文件名和物理文件名时遇到问题...这导致我假设您没有多个日志文件或 NDF 等和日志文件将总是为 2

    但是,为什么还是要缩小?

    更改恢复模式:ALTER DATABASE [4_o5] SET RECOVERY SIMPLE

    【讨论】:

    • 是的,shrink 与:USE [4_o5]; DBCC SHRINKFILE (2, 10) 非常感谢。您能否也请建议如何将日志记录设置为简单。原因与提供者如何为数据库分配空间有关,因为它可以达到可用扩展的极限——它非常接近它。与他们交谈以尽快升级我们。只需要先处理这个问题。
    • 如果数据库名称以数字开头,则 USE 将不起作用 - 您需要使用 USE [4_o5]
    【解决方案2】:

    试试这个:

    USE [4_o5];
    GO
    ALTER DATABASE [4_o5] SET RECOVERY SIMPLE;
    GO
    DBCC SHRINKFILE ([4_o5_log], 10);
    GO
    

    您的以数字开头的数据库名称有点不寻常 - 尝试将其放在方括号中。

    更新:对于DBCC SHRINKFILE,您需要日志文件的逻辑名称 - 这是来自sp_helpfile 调用的name 属性。而且你还需要把它放在方括号中:

    USE [4_o5]
    GO
    DBCC SHRINKFILE ([4_o5_log], 10)
    GO
    

    【讨论】:

    • 是的,提供者要求以数字开头。
    • 现在我得到一个稍微改变的错误:'4' 附近的语法不正确。 'GO' 附近的语法不正确。 'GO' 附近的语法不正确。
    • @b0x0rz:抱歉,您还需要在 USE 语句中的数据库名称两边加上方括号。
    • 是的,我也把它们放在那里 - 那么错误是:'GO'附近的语法不正确。 'GO' 附近的语法不正确。 'GO' 附近的语法不正确。
    • 你不应该需要GO
    猜你喜欢
    • 2010-10-03
    • 2014-10-17
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    相关资源
    最近更新 更多