最近,將網站從國內網站搬移到了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 則完全沒有問題。
通常新舊服務商給用戶開的用戶名並不一樣,所以我們需要更改一下數據庫的所有者。