我正在生产一个SQL Server 2008数据库,我们正在转移到新服务器上。当前数据库只有一个~400GB .MDF
个文件。新服务器将运行SQL Server 2012,我们正在运行镜像Intel 910 SSD。这些驱动器将为我们提供4x 200GB分区。
为了完成这项工作,我们需要使用.MDF
将单个DBCC SHIRNKFILE with EMPTYFILE
拆分为4个较小的EMPTY
。我们在测试中做到了这一点,它仍然需要大约3.5个小时才能完成。现有数据库是OLTP,365/24/7,我知道在此过程中会发生阻塞,所以我们不能先在生产中进行。
我的问题是,有没有办法将数据库备份和恢复到临时位置的新服务器,创建新文件.MDF
临时{{1}}到新位置,然后应用事务日志之后?这样我们可以在当前旧产品启动并运行的同时移动数据,然后进行短暂关闭,应用日志并启动新数据库?
或者是否有其他选项可以从服务器A获取一个文件,服务器B在不同驱动器上获得4个文件并且停机时间最短?
答案 0 :(得分:1)
有人认为,如果你有磁盘空间,你可以做到:
DROP_EXISTING=ON
在新文件组上创建所有索引(并指定新文件组)这对大对象数据不起作用,您需要手动将其移动到新表。
这个的语法类似于:
CREATE CLUSTERED INDEX [index]
ON [schema].[table]([columns)
WITH (DROP_EXISTING = ON, ONLINE = ON)
ON [filegroup]
索引可能会在创建新索引时保持在线状态。这将导致tempdb使用更多空间。