Sql-Server

數據文件超出硬體 - 拆分文件?

  • November 19, 2014

我目前工作的地方,主要業務數據庫位於虛擬伺服器(SQL Server 2005 標準)上。臨時數據庫和日誌在一個磁碟上,數據庫本身在另一個磁碟上。SAN 的配置方式是它們只能配置 512GB 磁碟(我聽說是 4K 塊,但我對 SAN 一無所知)。保存數據庫的磁碟上大約有 4% 的可用空間。

我的任務是找到一種方法來歸檔舊數據並將其從數據庫中清除為一年的數據塊以歸檔到磁帶(我是一名承包商,實際上我是一名開發人員,儘管我過去曾涉足 DBA 領域並且有 15 年左右的 SQL Server 開發經驗,而不是 DBA,我一進門就遞給我。我們確實有 DBA,所以我不知道為什麼要這樣做,但是沒關係)。那是大約 6 個月前,從那時起,我斷斷續續地建構了一些可以做到這一點的東西。但我越來越擔心我們無法對生成的數據庫進行足夠的測試以驗證我們確實沒有破壞某些東西,我一直在考慮尋找替代解決方案。

我首先想到了分區,但因為我們有 SE 並且沒有機會升級到 EE,因為在 6 個月左右的時間裡,整個 shebang 將轉移到一個擁有更大、更現代基礎設施的專用數據中心,整個系統將被新的系統取代未來2-4年的發展。但後來我突然想到,我們當然可以將數據庫拆分為一個文件組中的多個文件,並將它們分佈在多個磁碟上(我們可以配置更多 512GB 磁碟)。這使整個數據庫完好無損,甚至可能有輕微的性能優勢,儘管這不是這裡的主要目標。

我很確定這在 SE 中是可以的(同樣,我不是 DBA),而且我認為這樣做的風險要小得多,而且實施起來可能更快。所以我的問題:

  1. 是否可以在 2005 SE 中將數據庫拆分為多個文件?
  2. 是否可以將目前位於單個磁碟上的一個文件中的現有數據庫拆分為跨多個磁碟的多個文件?
  3. 除了這些資訊之外,我還需要提供更多資訊來說服任何理智的人,冒著破壞從生產數據庫中清除數據的數百萬英鎊業務的風險是愚蠢的嗎?
  1. 是的

2)是的,

創建新文件後,您需要刪除並重新創建目標表的聚集索引,將它們移動到新文件組以移動數據:

CREATE CLUSTERED INDEX CIX_YourTable
ON dbo.YourTable(YourClusteringKeyFields)
WITH DROP_EXISTING
ON [filegroup_name]
  1. 如果你能讓 DBA 支持你使用這個解決方案,我想你會沒事的。根據您的限制,這似乎是一個非常合理的舉動 - 但請記住在嘗試移動數據之前進行備份!

引用自:https://dba.stackexchange.com/questions/83069