INF:認識並對 SQL Server 2000 中的複製資料庫精靈進行疑難排解

文章翻譯 文章翻譯
文章編號: 274463 - 檢視此文章適用的產品。
本文曾發行於 CHT274463
全部展開 | 全部摺疊

在此頁中

結論

「複製資料庫精靈」是 SQL Server 2000 中的新公用程式,可以讓您從 SQL Server 7.0 或從 SQL Server 2000 將資料庫移動或複製到 SQL Server 2000。複製或移動的過程十分簡易,處理過程看起來幾乎沒有影響到任何事。本文提供的資訊說明「複製資料庫精靈」的運作方式,並描述使用此精靈時需要留意的一些問題。

其他相關資訊

複製資料庫精靈的運作方式

如果要開啟「複製資料庫精靈」:
  • 在 SQL Server Enterprise Manager 中,按一下 [管理],然後按一下 [執行精靈]

    - 或 -

  • 用滑鼠右鍵按一下 [資料庫] 資料夾,按一下 [所有工作],然後再按一下 [複製資料庫精靈...]

    - 或 -

  • 在命令提示字元中輸入 Cdw.exe,然後按 Enter
此精靈會卸離要複製或移動的資料庫,將資料庫的相關檔案複製到目的伺服器,然後再附加資料庫。資料庫的卸離與附加是透過下列預存程序執行:
  • sp_detach_db

    - 及 -

  • sp_attach_db
如需這些預存程序的詳細資訊,請參閱《SQL Server 線上叢書》中的<sp_attach_db>和<sp_detach_db>主題。

實際的檔案複製作業是透過 XP_CMDSHELL 發生,它會執行命令列的 COPY 命令。這就是為何執行「複製資料庫精靈」的帳戶必須是 sysadmin 成員的原因。如需詳細資訊,請參閱《SQL Server 線上叢書》中的<使用複製資料庫精靈>。

此精靈會執行下列步驟:
  1. 在要複製檔案的來源電腦上建立一個 UNC 共用點。
  2. 檢查來源資料庫中使用中的連線。
  3. 將資料庫置於單一使用者模式中。
  4. 卸離來源資料庫。
  5. 檢查目的地是否有這些檔案,然後將資料庫檔案複製到先前建立的共用點。
  6. 將資料庫附加回來源伺服器。
  7. 將資料庫附加至目的伺服器。
  8. 移除 UNC 共用點。
  9. 將資料庫置回於原來的模式 (單一使用者、多重使用者等等)。
還有其他四個功能,可讓您移動和要複製或移動的資料庫有關的物件。
  • 登入 (建議選項)。
    • 所有在封裝執行時期所偵測到的登入。
    • 只有選取資料庫使用的登入。
  • Master 資料庫中的共用預存程序 (選擇性)。
    • 所有在封裝執行時期所偵測到的預存程序。
    • 使用者選取的預存程序。
  • msdb 中的作業 (選擇性)。
    • 所有在封裝執行時期所偵測到的作業。
    • 使用者選取的作業。
  • 使用者定義的錯誤訊息 (選擇性)。
    • 所有在封裝執行時期所偵測到的錯誤訊息。
    • 使用者選取的錯誤訊息。

精靈建立資料轉換服務 (DTS) 封裝

「複製資料庫精靈」會建立一個在目的伺服器上執行的 DTS 封裝,可以立即執行或排程時間稍後再執行。此外,您可以使用 DTS 設計師工具並按一下 [傳送資料庫工作],手動建立資料庫 DTS 封裝的副本。如需詳細資訊,請參閱《SQL Server 2000 線上叢書》中的<傳送資料庫物件工作>主題。

如果此封裝排程為重複執行或一次執行,此封裝就會被儲存。因此,必須啟動目的伺服器上的 SQL Server 代理程式。傳送資料庫 DTS 封裝必須被視為和任何其他 DTS 封裝一樣,包括和排程與執行封裝相關的需求及權限。如需有關如何疑難排解已排程的 DTS 封裝問題的詳細資訊,請參閱下列「Microsoft 知識庫」中的文件:
269074 INF:如何將 DTS 封裝當成排程的作業執行
您可以搭配 Microsoft SQL Server 7.0 一起使用「複製資料庫精靈」,但 SQL Server 7.0 只能作為來源資料庫伺服器。您不能搭配 Microsoft SQL Server 6.x 或更舊的版本來使用此精靈。

複製資料庫精靈記錄檔 - DTS 封裝記錄檔

CDW 事件的記錄檔儲存在 MSDB..sysdtspackagelog 系統資料表中,也可以使用 SQL Enterprise Manager (SEM) 檢視。如果要檢視記錄檔,請依照下列步驟執行:
  1. 在儲存封裝的目的伺服器上,開啟 SEM 並展開 [資料轉換服務] 資料夾。
  2. [本機封裝] 下面,找到您想要檢視的封裝記錄檔。根據預設,封裝被命名為 CDW_SourceServer_DestinationServer_autonumber。
  3. 用滑鼠右鍵按一下封裝,然後選取 [封裝記錄檔] 選項。
  4. [DTS 封裝版本與記錄樹] 下面,按一下加號 (+) 以展開並檢視記錄檔清單。
這個對話方塊可以讓您檢視此封裝的記錄檔,或從下拉式方塊選取其他封裝。您也可以按一下 [刪除] 按鈕,刪除不需要的記錄檔。

或者,您也可以將 DTS 封裝設定為產生輸出檔案,以供疑難排解之用。
  1. 用滑鼠右鍵按一下封裝,選取 [設計封裝]
  2. [封裝] 功能表上,選取 [內容]
  3. [記錄] 索引標籤上,指定錯誤檔案。

    這個檔案中會有封裝執行的詳細資訊。

複製檔案的權限

目的 SQL Server 的啟動帳戶必須是網域帳戶,並且必須具備來源 SQL Server 伺服器電腦的本機系統管理員權限,才能夠將檔案從來源複製到目的地。

如果目的 SQL Server 是在本機系統帳戶之下啟動的,您可能會收到下面錯誤訊息:
您的 SQL Server 服務是在區域系統帳戶下執行。您需要變更 SQL Server 服務的帳戶,以擁有在網路上複製檔案的權限。
如果目的 SQL Server 是在沒有來源電腦的本機系統管理員權限的網域帳戶之下啟動的,那麼精靈可能會產生下面錯誤訊息:
步驟錯誤來源:Microsoft 資料轉換服務 (DTS) 封裝
步驟錯誤描述:未指定的錯誤

步驟錯誤碼:80004005
步驟錯誤說明檔案:sqldts80.hlp
步驟錯誤說明內容識別碼:1100
按一下 [更多資訊>>>] 按鈕,您會發現建立遠端共用的權限並不存在。
無法建立共用 OMWWIZD

注意資料庫的卸離

先前已經提到,「複製資料庫精靈」會在將來源資料庫複製到目的伺服器之前卸離來源資料庫。如果資料庫為「可疑」狀態,或是資料庫存在任何其他可能會阻礙卸離或重新附加 的問題,請勿執行「複製資料庫精靈」。如 I/O 錯誤 (例如,錯誤 823)、資料整合性錯誤 (例如,資料表毀損) 或任何已知的硬體問題 (例如,系統事件記錄檔中出現 SCSI 連接埠錯誤或控制器錯誤) 等等,都可能對重新附加資料庫造成阻礙。

請確定來源資料庫未被標示為「唯讀」、「離線」、「可疑」、「緊急」或「正在載入」,否則卸離將會失敗。卸離會因卸離程序必須更新資料庫中的統計資料而失敗;如果資料庫一直無法寫入,統計資料更新便會失敗。如果卸離因資料庫處於無法寫入的狀態而失敗,便會產生下面的錯誤訊息:
無法卸離資料庫 <DatabaseName>
[檢視錯誤] 按鈕顯示如下:
步驟錯誤來源:Microsoft 資料轉換服務 (DTS) 封裝
步驟錯誤描述:未指定的錯誤

步驟錯誤碼:80004005
步驟錯誤說明檔案:sqldts80.hlp
步驟錯誤說明內容識別碼:1100
此外,卸離資料庫時,資料庫必須處於單一使用者模式,或沒有使用者連線至此資料庫。如果有多個使用者正在使用資料庫,此精靈可能會失敗,並出現下面錯誤訊息:
步驟錯誤來源:Microsoft 資料轉換服務 (DTS) 封裝
步驟錯誤描述:未指定的錯誤

步驟錯誤碼:80004005
步驟錯誤說明檔案:sqldts80.hlp
步驟錯誤說明內容識別碼:1100
如果您按一下 [更多資訊] 按鈕,就可以看見造成問題的根本原因:
資料庫 [dbname] 有 [N] 個現用連線。將不會傳送資料庫。

卸離資料庫的權限

卸離資料庫需要具備特定權限。《SQL Server 2000 線上叢書》會界定使用精靈應具備的適當權限:
「若要使用「複製資料庫精靈」,您必須是系統管理員或是 sysadmin 角色的成員。如果正在執行 Microsoft Windows NT? 4.0 或 Microsoft Windows? 2000,您的使用者帳號必須具備目的伺服器的系統管理員權限。」

確認目的目錄存在

使用「複製資料庫精靈」(CDW) 時,請在 [資料庫檔案位置] 畫面上,按一下 [修改] 按鈕,並確認目的目錄是正確的。如果目錄不存在,CDW 可能會失敗,並出現下面錯誤訊息:
步驟錯誤來源:Microsoft 資料轉換服務 (DTS) 封裝
步驟錯誤描述:未指定的錯誤

步驟錯誤碼:80004005
步驟錯誤說明檔案:sqldts80.hlp
步驟錯誤說明內容識別碼:1100
如果您按一下 [更多資訊 >>>] 按鈕,就會發現目錄並不存在。
目的地目錄不存在因此無法複製檔案 \\SOURCE_SERVER\OMWWIZx\Program Files\Microsoft SQL Server\MSSQL\Data\Filename_Data.mdf。

移動選項會移除資料庫

請記住,如果您選擇移動資料庫而不是複製資料庫,會從來源 SQL Server 伺服器中移除資料庫。更具體地說,會從來源伺服器上卸離資料庫,但不會重新附加回去。然而,原始的資料庫檔案 (.mdf、.ndf、.ldf) 會留在來源伺服器上,如果您基於空間考量不需要這些檔案,必須手動刪除這些檔案。下面警告訊息會出現在 [完成複製資料庫精靈] 對話方塊中:
資料庫 'Pubs' 將進行複製,但將只能在目的伺服器上使用。管理員必須刪除來源伺服器上資料庫 'Pubs' 的資料和記錄檔。
然而,如果您是要選擇 [複製] 卻誤選了 [移動] 選項,您可以安全地將這些檔案重新附加回伺服器,以復原資料庫。

移動登入

「複製資料庫精靈」有一個新功能可以減輕手動移動登入的問題。精靈會辨識對應至資料庫使用者的登入,並提供選項讓您將這些登入當做資料庫的一部份,一起移動或複製。精靈會同時移動 SQL Server 標準驗證登入以及 Microsoft Windows NT 與 Microsoft Windows 2000 驗證登入。

舊版 SQL Server 需要以手動方式移動和要複製或移動的資料庫的使用者相關的登入。如需使用舊版的 SQL Server 傳送登入的詳細資訊,請參閱「Microsoft 知識庫」中的下列文件:
168001 PRB:還原傾印之後發生使用者登入及 (或) 權限錯誤
246133 INF:在 SQL Server 7.0 與 SQL Server 2000 之間傳送登入和密碼
請注意,具有 SQL Server 登入存取權的 Windows NT/2000 本機群組與使用者無法在不同的電腦之間傳送。如果您嘗試這樣做,登入的傳送將會失敗。如果您按一下 [更多資訊 >>>] 按鈕,就會看見造成問題的根本原因:
「傳送登入 SourceMachine\LocalGroup1 失敗」
- 或 -
「傳送登入 SourceMachine\LocalUser1 失敗」

資料庫/檔案存在或磁碟空間不足

傳送資料庫時,精靈會偵測目的伺服器上是否已經存在此資料庫。[選取移動或複製的資料庫] 對話方塊會指出資料庫是否可以在 [確定] 狀態下進行傳送,或者因為資料庫 [已經存在] 或它是像 [master] 資料庫這樣的 [系統資料庫],因而無法傳送資料庫。

如果目的伺服器上已經有相同的資料庫檔案,資料庫的傳送作業也可能會停止。因此,您可能會有一個名為 MyPubs 的資料庫,其所包含的檔案名稱和 Pubs 資料庫的那些檔案名稱相同。您會看見那些檔案目的標示著紅色的 X。
「來源的檔案名稱與目的地的相同,或目的地的可用磁碟空間不足。」
為了避免發生此類錯誤訊息,請在目的伺服器上修改要建立的檔案名稱,或是變更要建立的檔案的實際位置。

如果目的伺服器上的磁碟空間不足,也可能會阻礙傳送作業。請變更磁碟機或是刪除一些檔案,以釋放足夠的磁碟空間。

全文檢索搜尋停止。全文檢索目錄檔案沒有傳送

如果資料庫包含任何的全文檢索目錄,使用「複製資料庫精靈」傳送此資料庫時會產生兩個結果。首先,精靈會停止搜尋全文 (FT) 檢索目錄,以便將資料庫置於單一使用者模式。其次,精靈不會移動 FT 檢索目錄檔案。如果您在執行「複製資料庫精靈」之後,嘗試在來源或目的 SQL 伺服器上執行全文搜尋查詢,可能會收到下面錯誤訊息:
伺服器:伺服器:訊息 7616,層級 16,狀態 1,行 1
目前的資料庫並未啟用全文搜尋。請使用 sp_fulltext_database 來啟用全文搜尋。
如需詳細資訊,請參閱「Microsoft 知識庫」中的下列文件:
303224 FIX:Use of the Copy Database Wizard to Copy a Database Disables Full-Text Indexing on the Source Database
如果要在來源和目的 SQL Server 伺服器上執行全文搜尋,請執行下列步驟:
  1. 執行下面的預存程序,在來源與/或目的資料庫上啟用全文檢索:
    sp_fulltext_database 'enable'
    					
  2. 在所有目錄上執行完全擴展。
下面是擷取自《SQL Server 線上叢書》的相關內容:
「如果您想要複製有全文檢索目錄的資料庫,在完成複製作業之後,無法在來源伺服器使用資料庫的全文檢索目錄。您必須以手動的方式在目的伺服器上重新擴展全文檢索目錄。

如果您要移動有全文檢索目錄的資料庫,當資料庫移動時,沒有任何相關的全文檢索目錄檔案會跟著移動。這些檔案必須由資料庫系統管理員以手動的方式移動。」
如需有關如何移動全文檢索目錄的詳細資訊,請參閱「Microsoft 知識庫」中的下列文件:
240867 INF:如何移動、複製和備份 SQL 7.0 全文檢索目錄資料夾和檔案

?考

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
327270 SQL Server 2000 is not supported on Windows Server 2003 Terminal Server application server

屬性

文章編號: 274463 - 上次校閱: 2011年5月11日 - 版次: 7.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbsqldeveloper kbinfo KB274463
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com