今天维护自己的一个网站,发现data.MDF数据库已经达到120M,数据日志文件data_log.LDF更是达到256M之巨.
由于网站数据都有定期备份,感觉数据日志也没太大的用处,毕竟不是企业使用,数据安全性要求也没那么高,所以决定为数据库减肥瘦身.
方法一
=================================================
在 SQL Server 2005 中,通过使用”分离和附加操作”将用户数据库(只有一个*.mdf文件或*.MDF/*_log.LDF两个文件都存在)
从 SQL Server 7.0 或 SQL Server 2000 升级到更高版本。也实现了只有一个*.mdf文件附加/还原成功的目的.
呵呵.步骤不难的.
操作步骤:
1.先将数据库分离.保存好Data.mdf和Data_log.ldf文件.
2.将复制的 Data.mdf 数据库和日志文件(可以没有,我选择的是直接没有,以达到删除_log.LDF的目的)附加到 SQL Server 2005 的实例(此示例使用了相同的数据库名称)。
3.在 SQL Server Management Studio中,打开新的查询编辑器查询并连接到要附加该数据库的服务器实例。
4.执行以下 CREATE DATABASE 语句:
–运行代码
USE master;
GO
CREATE DATABASE Data ON PRIMARY
(FILENAME = ‘D:\MSSQL\DATA\Data.mdf’)
FOR ATTACH;
GO
–如果两个文件都有,则执行下面的代码(适合于数据库升级,比如从MSSQL2000升级到MSSQL2005).
USE master;
GO
CREATE DATABASE pubs ON PRIMARY
FILENAME = ‘D:\MSSQL\DATA\Data.mdf’)
LOG ON (FILENAME = ‘D:\MSSQL\DATA\Data_log.LDF’)
FOR ATTACH;
GO
***注意:***
在 SQL Server Management Studio 中,新附加的数据库在对象资源管理器中不是立即可见的。
若要查看数据库,请单击“对象资源管理器”窗口,并选择“视图”>“刷新”。如果展开“数据库”节点,新附加的数据库现在就会显示在数据库列表中。
–下面是执行后的返回消息(没有Data_log.LDF文件)
文件激活失败。物理文件名称’C:\Program Files\Microsoft SQL Server\MSSQL\data\Data_log.LDF’可能不正确。
新的日志文件 ‘D:\MSSQL\DATA\Data_log.LDF’ 已创建。
方法二:
=============================================================
使用系统存储过程 (Transact-SQL) 之 数据库引擎存储过程 (Transact-SQL)
sp_attach_single_file_db
–使用示例
–将”D:\MSSQL\DATA\database.mdf” 这个数据库文件,附加至sql2005数据库中,
–附加的新数据库名为:DataBase2
USE master;
GO
EXEC sp_detach_db @dbname = ‘DataBase2′;
EXEC sp_attach_single_file_db @dbname = ‘DataBase2′,
@physname = N’D:\MSSQL\DATA\database.mdf’;
go
===================
消息 15010,级别 16,状态 1,过程 sp_detach_db,第 34 行
数据库 ‘DataBase2′ 不存在。请使用 sp_helpdb 来显示可用的数据库。
文件激活失败。物理文件名称’C:\DotNetNuke_Build\Website\App_Data\Database2_log.ldf’可能不正确。
新的日志文件 ‘D:\MSSQL\DATA\DataBase2_log.LDF’ 已创建。
经过一番折腾之后,数据库Data_log.LDF已经缩小到1024K,然后你可以在属性-文件里面设置一下日志文件的增量和最大文件大小,我设置的log文件为100M,估计对我那小网站应该是足够了.
话说回来,对于数据库一定要养成定期数据备份的习惯,每一次操作都有风险.不然我们的辛苦就白费了!
(责任编辑:龙舞天翔) |