2011-03-15 122 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)。他還有一個關於做文件組恢復教程的鏈接。