删除日志以增加数据库空间?

ste*_*eve 2 sql-server database-size transaction-log

我正在运行 SQL Server 2008 Express 并且遇到了 4GB 大小的问题。在迁移到更大的数据库之前,我想腾出一些空间给我时间。

我不需要我的交易日志。那么,我可以删除我的日志以增加空间吗?

否则,我将不得不创建一个重复的数据库结构,然后将数据复制到新数据库中,然后从原始数据库中删除所有内容,以便我可以重新开始。

在这种情况下,是否有一种“简单的方法”可以将旧表中的数据复制到新表中?

Tho*_*ger 5

我不需要我的交易日志。

是的你是。

我可以删除我的日志以增加空间吗?

不,你不能。

在这种情况下,是否有一种“简单的方法”可以将旧表中的数据复制到新表中?

在你放弃当前数据库之前,你应该退后一步分析为什么你认为当前数据库中的事务日志太大。除非您记录工作负载更改,否则新数据库中将发生相同的行为。

首先找出您的事务日志文件有多大以及文件内实际使用了多少空间:

use YourDatabaseName;
go

select
    name,
    physical_name,
    type_desc,
    size_mb = 
        convert(decimal(10, 2), size * 8.0 / 1024),
    used_space_mb = 
        convert(decimal(10, 2), fileproperty(name, 'spaceused') * 8.0 / 1024)
from sys.database_files;
Run Code Online (Sandbox Code Playgroud)

注意:您需要将“YourDatabaseName”更改为适当的数据库名称。

同样,某些数据库设置(恢复模型)和日志重用描述也可以帮助对过大的事务日志进行故障排除:

select 
    name,
    recovery_model_desc,
    log_reuse_wait_desc
from sys.databases
where name = 'YourDatabaseName';
Run Code Online (Sandbox Code Playgroud)

上述查询应该是一个不错的起点,可以对您的问题进行故障排除和/或发现。请随意在下面评论您的发现,我们可以更进一步。

另一件事,您的 Express Edition 是否完全局限于 SQL Server 2008?在 SQL Server 2008 R2 及更高版本中,最大数据库大小为 10 GB。不能使用较新版本的 SQL Server 吗?