2016-05-05 25 views
0

我有問題。我目前正在爲我的課程開發一個SQL項目,並且我是一位SQL初學者。在我的項目的一部分中,我將所有架構從數據庫移到新的文件組。如何根據架構移動所有表(Sql Server 2012)

如果我從過去幾天的研究中得到了正確的理解,我將使用SELECT名稱FROM sys.schemas語句來查找數據庫中的所有模式,使用模式獲取關聯的表,並將它們移動到新的文件組。

好吧,我知道如何將一個表移動到一個新的文件組中,以及在這個過程中如何使用索引。我感到困惑的是如何使用SELECT語句或其他語句調用特定模式中的所有表來移動它們。我們使用的數據庫非常龐大(adventureworks),所以我不確定答案是單獨移動每個表。

我已經研究了好幾天,查看了我的文章,我的學生顧問一直沒有什麼幫助。我真的不知道從哪裏開始。我已經搜索瞭如何將特定索引,表格等移動到其他文件組中。就像我說的那樣,我在這方面非常適合初學者,主要是尋找方向和例子。非常感謝您的幫助

+0

我會首先識別所有的表格,然後通過表格複製這些數據。我假設你可以從主表中找到該表,然後可以從該標識符重新創建一個新表?完成之後,您可以移動數據。 –

回答

0

我不知道有任何批量過程可以做到這一點。我將構建一個要移動的表的列表,遍歷該列表,並逐個移動它們。這可能涉及一個遊標(他們是否教你關於遊標,他們是否給你使用這些遊戲的可怕警告,他們解釋了爲什麼?)或某種形式的自己動手列表。

+0

不,他們沒有教我們遊標。我知道以前項目中的遊標,因爲那是我能完成的唯一方法。我可以使用LIKE語句使用select語句創建表的列表,因爲所有模式都基於前綴。我不確定SQL查詢代碼將遍歷每個表來移動它。特別是如果我必須區分非聚簇索引和聚簇索引是否正確? –

+0

在這種情況下,請使用遊標。您需要將sys.tables加入到sys.indexes中,以確定它是堆還是聚簇索引(提示:其中index_id <2),並在遊標循環中相應地處理表。 –

相關問題