管理SQL日志文件大小

时间:2013-10-03 22:21:38

标签: c# sql database visual-studio

我在Visual Studio 2012中有一个项目,它使用一个带有我们称之为

的文件的数据库

db.mdf,db_log.ldf,db_db_0.ldf(不知道这个来自哪里)

我要做的是确保.ldf文件大小保持较小。我被告知要备份数据库(我假设.mdf),然后从那个时间点重新创建.ldf文件。因此,执行这些步骤之前的任何事务都将消失,并且.ldf文件更小且更易于管理。

我尝试过的事情:

string detachQuery = String.Format("sp_detach_db @dbname='{0}'", _connection.Database);

using (var cmd = new SqlCommand(detachQuery, _connection))
{
    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (Exception e) { }
}

这里的想法是在备份数据库之后从.ldf文件中分离数据库,然后将其重新附加到新的.ldf文件,尽管我不知道如何创建新的.ldf文件。这个问题是我得到以下异常:

"Cannot detach the database because it is currently in use."

我的问题是,在C#中,这是怎么做到的?我的第二个问题是:是否有更好的方法来实现更易于管理的日志文件的预期效果?

1 个答案:

答案 0 :(得分:3)

使用Detach方法,您没有采取正确的方法。如果要保持日志文件较小,则需要定期(每15分钟)运行一次事务日志备份,有时会缩小文件。

如果您不关心时间点恢复(我会假设,因为您正在考虑分离db文件),只需打开数据库属性中的简单恢复模式。

此处可以找到恢复模式的概述。找出哪一个是正确的,但根本不需要c#代码来解决这个问题。 http://technet.microsoft.com/en-us/library/ms189275(v=sql.105).aspx