2011-03-09 62 views
0

我在sql server 2008 db中有事務表。我想在這張桌子上做日常分區。所以我使用了分區創建嚮導。我給了分區模式,分配函數應有盡有。我將邊界值設置爲1.1.2011和10.1.2011以及日常水平。然後我每天輸入一行的值(僅用於檢查),它將插入到每個分區中。 Atlast每個分區每個包含1行。但我想以這種方式,如果我在11.1.2011進入,它將被加載到第1個分區刪除現有的數據..我怎麼能做到這一點。如何在sql server 2008中做分區

回答

1

從技術的角度來看,這是可能的,而且您正嘗試複製Oracle提供的一種間隔分區形式,其中新的分區是爲您自動生成的。在SQL Server中,你必須完全自己管理這個過程 - 分區維護,分區的創建/刪除必須在程序中編碼。

那麼可以這樣做嗎?是的 - 你可以通過添加一個觸發器來模擬間隔分區,並且我敲了一個這樣的例子(http://sqlfascination.com/2010/09/12/interval-partitioning-in-sql-server-2008/

你應該這樣做嗎?我對此表示嚴重懷疑 - 性能的提升不會微不足道,觸發器中的分區管理是測試中的一項練習,而不是生產代碼。

如果您知道每天晚上需要向前移動分區,則可以安排存儲過程爲您處理這一切,這比使用觸發器更有效。

+0

實際上每天都會將數據加載到事務表中。所以在插入之前,我可以調用另一個過程來處理分區創建。這應該沒問題。但我怎麼能刪除第一個分區,並插入一個新的分區,以便在任何時候我有10個分區 – 2011-03-09 13:36:53

+0

我已經覆蓋了滾動分區窗口以及:http://sqlfascination.com/2009/12/09/ rolling-a-partition-forward-part-1/ – Andrew 2011-03-09 14:30:48

+0

可以使用滑動窗口分區方法提供步驟 – 2011-03-10 14:02:17