最近,將網站從國內網站搬移到了Lunarpage,程式轉移比較簡單,使用cuteftp上傳上去就可以了。但是資料庫轉移一直都是很棘手的一個問題。本文介紹資料庫轉移的方法。
資料庫轉移最簡單的方法是使用DTS,但是Lunarpages資料庫不支援遠端資料庫連結,所以無法使用DTS,因此只好使用publishing轉移資料。
具體步驟如下:
Step1. 運行 SqlPubWiz.exe
Publishing類似MS SQL的一個外掛程式,你可以到
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A
下載,運行後可以在tools下找到
Step2 運行後,會出現運行嚮導,找到本機資料庫
Step3.選項要產生的類型,系統會自動檢測可用內容,一般之選擇“表”“預存程序”和“視圖”,對於Users就不要讓系統產生了
點擊Next,一直完成。
更改資料庫擁有者
以下是核心,非常重要,否則不會成功。
在我們使用網站時,通常會使用SP給我們的賬戶,例如我原來的資料庫叫做 “bf4190_”
當時網站供應商給我的賬戶為 bf419,則系統產生的資料表如下
你可以看到,有的表前面有首碼bf419,有的有首碼dbo (db哦,是database owner),這很不同。因為在我們建立表時,指令碼的寫法略有區別。
寫法一:
| CREATE TABLE [dbo].[ads] ( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [img] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, } |
寫法二:
| CREATE TABLE [ads] ( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [img] [nvarchar](200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, } |
對於第一種,產生的表就是 dbo.ads, 而第二個表則是 bf419.ads,因為你的bf419其實就是dbo,所以系統可以運行。
但是,當你把資料庫轉移到新的服務商時,如果你的賬戶叫做XXXX,則上面建立bf419.ads則出現錯誤,而用 dbo.ads 則完全沒有問題。
通常新舊服務商給使用者開的使用者名稱並不一樣,所以我們需要更改一下資料庫的所有者。