日期:2014-05-19  浏览次数:20799 次

怎样将一个数据库的多个文件合并到两个数据库文件
怎样将一个数据库的多个文件合并到两个数据库文件

如果一个数据库有多个文件,如      
    database.mdf      
    database_log.ldf    
    database2.mdf      
    database2_log.ldf      
         
    这几个数据库文件属于一个数据库的文件来的,怎么将四个数据库文件怎样合并到成两个数据库文件呢(一个为数据文件,一个为日志文件)?      
    备份再还原还是这些文件。

------解决方案--------------------
新建数据库,用DTS将原数据库的所有对象导入到新数据库中。
------解决方案--------------------
1、清除日志
backup log db_name with no_log
2、在企业管理器压缩文件,好像有选择请空一个文件的
3、确认清空的文件可以在企业管理器数据库属性里删除

------解决方案--------------------
USE [你的库名]
GO

-- 1. 查出的数据文件对应的逻辑文件名(name 列是逻辑名, filename 是物理文件名)
SELECT
name, filename
FROM sysfiles
GO

-- 2. 将要删除的数据文件和日志文件中的数据转移到其他文件并
DBCC SHRINKFILE (N 'data2 ' , EMPTYFILE) -- data2 是你要删除的数据文件的逻辑名(name列)
DBCC SHRINKFILE (N 'log2 ' , EMPTYFILE) -- log2 是你要删除的日志文件的逻辑名(name列)
GO

-- 3. 删除文件
ALTER DATABASE [你的库名]
REMOVE FILE log2 -- log2 是你要删除的日志文件的逻辑名(name列)

ALTER DATABASE [你的库名]
REMOVE FILE data2 -- data2 是你要删除的数据文件的逻辑名(name列)

------解决方案--------------------
-- 4. 如果有需要, 删除文件组
-- 当你被删除的数据文件放在某个文件组, 而且这个文件组仅包含这个数据文件时, 在删除数据文件后, 应该考虑删除文件组

-- 这个查询可以查出文件组及包含的文件, 以协助你确定是否要进行删除文件组的操作
SELECT
groupname = CASE WHEN F.groupid = 0 THEN N 'LOG ' ELSE G.groupname END,
F.name, F.filename
FROM sysfilegroups G
FULL JOIN sysfiles F
ON G.groupid = F.groupid
ORDER BY groupname


-- 删除文件组使用类似这样的语句
ALTER DATABASE [你的库名]
REMOVE FILEGROUP 文件组名称
------解决方案--------------------
try:
http://topic.csdn.net/t/20041129/17/3599057.html
------解决方案--------------------
有个条件:

清空文件必须保证同一个文件组有其他文件,也就是说你的两个数据文件是一个文件组的,两个log文件也是一样
------解决方案--------------------
看鑽石~~~~
------解决方案--------------------
邹老大好像最近很忙啊!
------解决方案--------------------
老大露面了!!听老大的