3

我有一个生产中的 SQL Server 2008 数据库,我们正在将其转移到新服务器上。当前数据库有一个约 400GB 的.MDF文件。新服务器将运行 SQL Server 2012,我们正在运行镜像 Intel 910 SSD。这些驱动器将为我们提供 4 个 200GB 分区。

为了完成这项工作,我们需要.MDF使用DBCC SHIRNKFILE with EMPTYFILE. 我们已经在测试中这样做了,但仍然需要大约 3.5 小时才能完成,这太长了。现有的数据库是OLTP,365/24/7,我知道在这个过程中会发生阻塞,所以我们不能先在生产上做。

我的问题,有没有办法将数据库备份和恢复到临时位置的新服务器,创建新文件,EMPTY临时.MDF到新位置,然后应用事务日志?这样我们就可以在当前旧生产启动并运行时移动数据,然后短暂关闭,应用日志并启动新数据库?

或者是否有任何其他选项可以从服务器 A 获取一个文件,服务器 B 在不同驱动器上获取 4 个文件,并且停机时间最短?

4

1 回答 1

1

如果您有磁盘空间,您可以做的一种方法是:

  • 在新服务器上恢复数据库
  • 创建一个新的文件组
  • DROP_EXISTING=ON使用(并指定新文件组)在新文件组上创建所有索引
  • 删除旧文件组

这不适用于大对象数据,您需要手动将其移动到新表中。

语法类似于:

CREATE CLUSTERED INDEX [index]  
ON [schema].[table]([columns)
WITH (DROP_EXISTING = ON, ONLINE = ON) 
ON [filegroup]

在创建新索引时,索引可能会保持在线。不过,这将导致 tempdb 使用更多空间。

于 2013-03-15T00:35:23.173 回答