2013-03-15 64 views
3

我有在生产中的SQL Server 2008数据库,我们移动到新的服务器。当前数据库有一个〜400GB的.MDF文件。新服务器将运行SQL Server 2012,并且我们正在运行镜像Intel 910 SSD。这些驱动器将向我们展示4个200GB分区。迁移SQL Server数据库的多个文件

为了完成这项工作,我们需要使用DBCC SHIRNKFILE with EMPTYFILE将单个.MDF拆分为4个较小的那个。我们已经完成了这个测试,而且这个过程还需要3.5个小时。现有的数据库是OLTP和365/24/7,并且我知道这个过程中会发生阻塞,所以我们不能在生产中首先进行。

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

还是有什么其他的选择从服务器A获得一个文件和服务器B上以最少的停机时间不同的驱动器4个文件?

+1

最好问这对DBA.Stackexchange.com这些都是专家 – 2013-03-15 00:15:12

+0

谢谢,我加了它在那里,我不知道有一个SQL特定版本! – Lauren 2013-03-15 00:21:06

回答

1

人觉得你可以做,如果你有磁盘空间,方法是:

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

这不会FO工作r大型对象数据,您需要手动将其移动到新表格。

语法,这将是这样的:

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

这是可能的,而创建新的索引可以保持在线。这将导致tempdb使用更多的空间。

+0

难道他不能在新的FileGroup上删除并重新创建聚簇索引吗?我做那个移动表 – 2013-03-15 00:36:38

+0

这就是当你使用'DROP_EXISTING'时会发生什么。它会删除索引,然后在您指定的文件组上重建它。 – JodyT 2013-03-15 00:40:57

+0

空间不是临时存储的问题。我将在新服务器上对此进行讨论,并查看需要多长时间。我们的索引是在目前,这是另一个任务,我有一个有点疯狂,让我有一种感觉,这会慢一些萎缩,但会考虑它。干杯 – Lauren 2013-03-15 01:01:42