今天有朋友推薦個活就是把Sql Server 2005的數據庫轉到Sql Server 2000裡,但實際操作起來遇到的問題還不少,網上搜了一些辦法,在此陳列出來,並把我使用時遇到的問題及解決方案一並記錄下來,以備後期查閱
前幾步和網上說的一樣,先生成2000的腳本,然後再到2000裡面執行。操作如下:
打開 SQL Server 2005 的Manger Studio
-- 打開"對象資源管理器"(沒有的話按F8), 連接到你的實例
找到你要轉換的數據庫(建議先將此數據庫裡的登錄名清空,否則轉換會出現問題)
-- 右鍵選擇要轉成 SQL Server2000 的數據庫
-- 選擇 任務
-- 選擇 生成腳本
-- 在"腳本向導"的"選擇數據庫"中, 確定選擇的是要轉到2000的庫
-- 勾選"為所選數據庫中的所有對象編寫腳本" (這個勾不要其實也可以的,根據你的需要來。)
-- 在接下來的"選擇腳本選項"中, 找到"為服務器版本編寫腳本"項, 選擇"SQL Server 2000"
-- 其他選項根據需要設置
-- 最後把腳本保存到一個 .sql 腳本文件
復制代碼 代碼如下:
有可能會遇到的問題:
目標服務器版本不支持該對象或不支持該對象的一個屬性。 (Microsoft.SqlServer.Smo)
腳本無法成功生成。此問題是由於“數據庫兼容性級別”導致的。
解決方案:
server有個改兼容性級別的語句:
sp_dbcmptlevel [ [ @dbname = ] name ] [ , [ @new_cmptlevel = ] version ]
語句如下:
EXEC sp_dbcmptlevel '你的數據庫名', '80';
GO
這個80就是各個版本對應的版本號
60 = SQL Server 6.0
65 = SQL Server 6.5
70 = SQL Server 7.0
80 = SQL Server 2000 ——8.0
90 = SQL Server 2005 ——9.0
由於是轉到2000於是兼容性級別就要調到80
2. 在2000中創建目標數據庫
在查詢分析器(或2005的manger studio在打開腳本文件), 連接到SQL Server 2000,執行上面生成的腳本.以創建一個新的數據庫 。
復制代碼 代碼如下:
有可能會出現的問題:
max附近有語法錯誤
server2000裡面沒有max這種用法,所以建議大家把SQL腳本裡的MAX改成一個很大的數就是了,比如4000(4000好像是上限)。
odb問題
其他數據庫我不知道,但是不論你用server什麼數據庫,只要不是你自己的,通常管理員是不會給你配odb權限的,所以把所有的odb檫掉就可以了。另外還有個辦法,用你的遠程數據庫登錄名可以改成那個用戶的所有者,在本地也修改一下,然後再運行,就OK啦。
3. 將數據從2005導到2000
首先打開SQL Server 2005 的Manage Studio
-- 打開"對象資源管理器"(沒有的話按F8), 連接到你的實例
-- 右鍵選擇要轉成 SQL Server2000 的數據庫--選擇 任務 --導出數據
(注意,如果你的Manage Studio 為 Express版本,那任務裡是沒有導出數據選項的,你可以直接找到你的數據安裝目錄裡的Binn文件夾,例如 C:\Program Files\Microsoft SQL Server\90\DTS\Binn 然後執行DTSWizard.exe文件即可。)
-- 在"SQL Server 導入和導出向導"的"選擇數據源"步驟中, 確定選擇的是要導出的數據庫
-- 在"選擇目標"步驟中, 連接到 2000, 並選擇步驟2新建的庫
-- 在"選擇源表和源視圖"中, 選擇所有的表(注意,如果表中有標識的話,要在此處選中表,然後單擊下方的“編輯映射”按鈕,新開窗口中勾選“使用標識插入”,每個有標識的表都要這樣選擇一次。還有,此處導入數據如果牽扯到主外鍵關系或者其他約束的話,一定要分批次按照關系的先後順序導入,否則會報錯。)
-- 最後完成
復制代碼 代碼如下:
最後注意下2000的select top 後跟的不可以是表達式,所以如果你的分頁裡有用到類似
declare @pageIndex int
select top (@pageIndex-1)*12 newsID from News
的話,請一律改成字符串拼接方法,例如下面的例子:
declare @strSql varchar(1000)
declare @pageIndex int
set @pageIndex= (@pageIndex-1)*12
set @strSql='select top '+str(@pageIndex)+' newsID from News'
exec (@strSql)
sql server 2005轉到2000的步驟(簡易版,一路不錯形式)
2005轉到2000的步驟
1. 生成for 2000版本的數據庫腳本
2005 的manger studio
-- 打開對象資源管理器(沒有的話按F8), 連接到你的實例
-- 右鍵要轉到2000的庫
-- 任務
-- 生成腳本
-- 在腳本向導的選擇數據庫中, 確定選擇的是要轉到2000的庫
-- 勾選為所選數據庫中的所有對象編寫腳本
-- 在接下來的選擇腳本選項中, 將”編寫創建數據庫的腳本”設為True,找到為服務器版本編寫腳本項, 選擇SQL Server 2000
-- 其他選項根據需要設置
-- 最後把腳本保存到一個 .sql 腳本文件
2. 在2000中創建目標數據庫
在查詢分析器(或2005的manger studio在打開腳本文件), 連接到SQL Server 2000,執行上面生成的腳本.以創建一個新的數據庫
3. 將數據從2005導到2000
打開SQL Server 2000的企業管理器
-- 右鍵要導入數據的數據庫
-- 任務
-- 導入數據
-- 在SQL Server 導入和導出向導的選擇數據源步驟中, 確定選擇的是要導出的數據庫
-- 在選擇數據源步驟中, 連接到 2005, 並選擇源數據庫
-- 在選擇源表和源視圖中, 選擇所有的表
-- 最後完成