2011-03-15 81 views
4

注意:不确定是否有特定的DB站点,所以我在此提出此问题。SQL Server - 索引丢失情况

SQL Server 2008 Enterprise。

我正在努力解决450gb数据库的许多问题。我试图首先获得mdf的大小,以便备份实际上可以发生。对于一些非常大的表格,我将索引移动到一个不同的文件组(希望稍后可以移动到一个单独的驱动器上),以尝试获取mdf大小。

我的问题是,假设我有一个单独的文件组中的所有索引,而不是mdf的一部分,只有mdf被备份。如果系统出现故障并且必须恢复备份,如果没有备份任何索引文件组,则最坏的情况是什么情况?

我假设事情会好的,但SQL将不得不重建索引,这将导致大规模的缓慢下降一点。

注意:在您对不良做法感到不满之前,我已经继承了这些问题,现在我正在玩消防员。

+2

您可能想考虑在[DBA和系统管理员]悬挂的[Serverfault.com](http://serverfault.com)上询问这个问题 - 他们可能对此类问题有更多背景和见解。 – 2011-03-15 15:09:58

+0

@marc_s serverfault没有接近SO的流量。回答需要很长时间才能获得。 – 2011-03-15 16:13:14

回答

4

创建索引可能需要一段时间,所以如果您必须从头开始重新创建它们,您可能会失去定义(除非正确记录),并且需要花费大量时间等待它们一次构建一个索引。根据表格的大小,可能需要一段时间才能创建一个表格。

我会建议,作为你正在做的一部分,你看看索引实际上在做什么,以及如果你可以删除/减少你有多少。很多时候开发人员和数据库管理员建立的索引过多,而一些经过深思熟虑的索引可以替代几个匆忙抛出的索引。

+0

就指标达成一致,但接下来即将到来。有许多索引可以删除或更改以减少包含的列,但这需要一些时间来评估,尤其是要获取组合索引的值。所以你说在恢复之后我们不得不重新创建索引,所以我应该把它们编写出来呢?这些定义不会与mdf中的表一起存储? – 2011-03-15 15:17:54

+0

我不确定。但是当你丢失了一个数据库的文件(例如)时,所有的服务器都可以告诉你它正试图连接到位置X的数据库,而不能。您不能使用该信息重新创建它,但必须从备份中恢复或从头开始。 – Thyamine 2011-03-15 15:21:55

1

退房布伦特奥扎尔的回答上ServerFault:https://serverfault.com/questions/1/how-to-exclude-indexes-from-backups-in-sql-server-2008

当灾难袭来时,您可以通过自身恢复 主文件组。数据 突然在线,但索引 没有。但是,要返回到 正常状态,您需要将该数据导出到新的干净数据库中,并从中添加 索引。

查看链接了解更多详情(并给他upvotes)。他还有一个关于做文件组恢复教程的链接。