none
資料庫匯出問題 RRS feed

  • 問題

  • 請問各位老師:

    我在SQL 2000作資料匯出到另外一台SQL 2000伺服器。

    在作完後我去比對兩台伺服器的資料檔案大小,

    發現第2 台的交易紀錄檔竟然將近有1.5G,資料庫大小沒變。

    原始的交易紀錄檔只有11M,資料庫將近2G。

       請問這樣是正常的嗎?
    2007年4月26日 上午 07:26

解答

  •  閒人 寫信:

    請問各位老師:

    我在SQL 2000作資料匯出到另外一台SQL 2000伺服器。

    在作完後我去比對兩台伺服器的資料檔案大小,

    發現第2 台的交易紀錄檔竟然將近有1.5G,資料庫大小沒變。

    原始的交易紀錄檔只有11M,資料庫將近2G。

       請問這樣是正常的嗎?

    Dear Sir:

    目的端的資料庫是正式的交易系統嗎??

    請檢查資料庫的Recovery Model 是否已經設為Simple, 如果不是請先設為Simple,再進行Log File 壓縮。

    至於是否要再將Recovery Model 調整回來,由於牽涉到備份還原架構,因此不再深入。

     

    2007年4月26日 上午 08:22

所有回覆

  •  閒人 寫信:

    請問各位老師:

    我在SQL 2000作資料匯出到另外一台SQL 2000伺服器。

    在作完後我去比對兩台伺服器的資料檔案大小,

    發現第2 台的交易紀錄檔竟然將近有1.5G,資料庫大小沒變。

    原始的交易紀錄檔只有11M,資料庫將近2G。

       請問這樣是正常的嗎?

    Dear Sir:

    目的端的資料庫是正式的交易系統嗎??

    請檢查資料庫的Recovery Model 是否已經設為Simple, 如果不是請先設為Simple,再進行Log File 壓縮。

    至於是否要再將Recovery Model 調整回來,由於牽涉到備份還原架構,因此不再深入。

     

    2007年4月26日 上午 08:22
  • 謝謝您的回覆:

    我的目的端只是備援!只是希望在正式的交易系統發生問題時,能馬上頂替工作。

    所以平時有設定單向(交易式)複寫。

    但因又有程式在這備援機上實驗,所以又設定每12小時由正式機匯出至這台備援機上。

    選擇的是在 SQL SERVER 資料庫之間進行物件和資料的複製模式。

    您指的Simple是指什麼?在哪邊設定?能否再說仔細點,謝謝!

    2007年4月27日 上午 03:35
  • 步驟如下:

    1. 開啟SQL Server Management Studio,連到目的伺服器
    2. 針對所需要的資料庫按下滑鼠右鍵,選取屬性
    3. 出現資料庫屬性視窗,選取選項頁面,將復原模式下拉選單設為簡易

     

    2007年4月27日 上午 04:45
  • 謝謝您詳細解說,不然我還一直找複寫與匯出的設定。

    已更改設定,也壓縮完畢。現在看起來正常。

    請問更改為Simple我還需要定期壓縮嗎?

    我現在設定在匯出完後一小時作交易檔壓縮。

    謝謝!

    2007年4月27日 上午 06:12
  •  閒人 寫信:
    謝謝您的回覆:(恕刪...)
    您好:
    當資料庫使用「完整復原」模式時,執行的所有資料列插入(Insert)作業都會記錄在交易記錄檔中。對於大型資料載入,將可能導致交易記錄檔迅速填滿。為了防止交易記錄檔的檔案過渡膨脹、硬碟空間耗盡,可以在符合下列條件的情況下,執行最少式記錄的大量複製:
  • 將復原模式改為「簡單」或為「大量登入」
  • 目標資料表未被複寫。
  • 目標資料表中沒有任何觸發程序。
  • 目標資料表只有 0 個資料列,或沒有任何索引。
  • 已指定 TABLOCK 提示。如需詳細資訊,請自行參閱線上叢書關於「控制鎖定行為」的說明。
    當複製到 SQL Server 的任何大量複製,如果不符合上述那些條件,就會被記錄下來並寫入交易記錄檔中。在進行大量複製作業前,若您一般使用的是「完整復原」模式,建議您將復原模型設成「大量登入」。這將防止大量複製作業使用太多的記錄空間,導致填滿交易記錄檔。但即使是「大量登入」復原,還是會佔用一些交易記錄檔空間。您最好在大量複製作業過程中,建立交易記錄檔備份,以釋出交易記錄檔空間。因此在情況允許之下,建議使用「簡單」復原模式,將不會耗用大量交易記錄檔空間

    調整復原模式的方式如下:
    1. SQL Server Enterprise Manager 中,展開您所欲調整復原模式的資料庫。
    2. 用滑鼠右鍵在該資料庫名稱上按一下,選則「內容」指令。
    3. 按一下「選項」索引標籤,選取「復原」區塊的「模型」下拉選單中的復原模式。
    4. 按一下「確定」按鈕來關閉該對話方塊。
    附註:
    雖然在執行最小大量複製時,資料的插入不會記錄在交易記錄中,但是 SQL Server 仍在每次有新內容配置到資料表時,自動記錄內容配置的相關資訊,也就是說仍然會佔用少許的交易記錄檔空間。

    針對資料複製時的效能議題,個人有幾點心得分享:
  • 在將大量資料列複製到包含索引的資料表時,如果能夠先卸除所有的索引、執行大量複製、並重建索引,這樣將會加快處理的速度。如需詳細資訊,請參閱線上叢書關於「將大量複製效能最佳化」的詳細說明。
  • 「資料封包大小」選項可用來設定整個網路上所用的封包(Packet)大小(單位:位元組)。封包是在用戶端與伺服器之間傳送要求與結果的固定大小資料區塊。SQL Server 預設的封包大小是 4,096 個位元組。適當地調整大於預設值的封包,將有助於改善效能,因為這樣會使網路讀取與寫入的動作變少。若要設定封包大小請依照下列步驟進行:
    1. 於 SQL Server Enterprise Manager 「工具」功能表中,按一下「選項」指令。
    2. 按一下「進階」索引標籤。
    3. 「封包大小 (位元組)」方塊中,鍵入一個數值,比方說 8192
    4. 按一下「確定」按鈕來關閉該對話方塊。
2007年4月27日 上午 06:17
版主
  • 謝謝ALEX老師如此詳細解說及心得分享。

    當初為了避免不可預期的問題,所以比隊員時資料庫設定為大量登入模式。想不到交易記錄就一直等倍成長,造成複寫空間不足。

    既然我這是備援機,當然就設定為簡單模式就好。謝謝各位老師的回覆。

    2007年4月27日 上午 07:15