一、適用場景
源端數據庫是SQL Server 2005 及以上。(SQL Server 2000未測試。)
數據文件總大小在10G以內。
可以在低峰期停應用。
二、導出步驟
1、軟件准備
如果源端SQL Server版本低於2008,則下載一個2008的客戶端工具,在任意一台機器上安裝。
下載Microsoft® SQL Server® 2008 Management Studio
安裝,忽略各種提示,都選默認選項。
2、運行SQL Server 2008 Management Studio,連接到源數據庫。

3、導出目標數據庫的生成腳本

彈出“腳本向導”的對話框,按提示選擇下一步

選擇數據庫
不要勾選“為所選數據庫中的有所對象編寫腳本”

選擇腳本選項,設置“編寫數據的腳本”為TRUE,其他選項根據實際需要修改。下圖是建議值。簡單起見除了創建數據庫的腳本,登錄腳本,編寫統計信息,生成依賴對象腳本這幾項一定要設置為FALSE,其他都可以設置為TRUE。

選擇對象類型,注意不要選“用戶和數據庫角色”

選擇存儲過程(如果沒有,就直接跳過)

選擇表,不用遷移的表就不要選了

選擇視圖,如果沒有就跳過

選擇輸出選項,可以選擇導出到一個文件,也可以選擇每個對象導出一個文件。數據量非常大的情況下建議每個對象導出一個文件。

最終確認

等待導出,數據量大的情況下,時間會比較久。

4、新建到RDS數據庫的連接,打開查詢分析器,執行上面導出的腳本。
如果腳本文件比較大,建議前面針對每個對象導出一份文件。
也可以不打開腳本進行執行,利用SQLCMD模式。

在目標RDS數據庫上打開一個查詢分析器,然后點擊菜單“查詢”,選擇“SQLCMD模式”
然后在查詢分析器里執行
執行OS命令是前面加上兩個感嘆號,后面跟上windows cmd命令
執行sql文件
:r d:\test\script20120605.sql

當文件很大的時候(如1G以上),如果雲服務器內存不大,很有可能會報 “OufOfMemory Exception”。這個時候就換個方法調用sqlcmd。
在windows的命令行下(開始->運行,輸入:cmd
Sqlcmd –S “xxx.sqlserver.rds.aliyuncs.com,3433” -U 用戶名 -P 密碼 -d 數據庫名 -i SQL文件路徑 -o 輸出日志名

5. 驗證數據(略)
三、可能遇到的問題:
1、 如果導出腳本里有亂碼,請檢查導出文件是否是Unicode格式
2、如果導入新庫后查詢有亂碼,請檢查新庫和老庫的服務器排序規則是否一致。
3、大表的導入慢問題。
當表的數據量非常大的時候,如超過百萬。上面的導入效率可能非常的低。這時候可以用bcp命令來導數據。方法如下:
1) 在源庫主機上或者雲服務器上用bcp命令導出源庫數據。
Bcp test.dbo.adminInfo out d:\tt\admininfo.out -T -S AY120724113142a -c

2) 用前面SQLServer導出腳本在目標RDS 數據庫中建好表,但是不要建索引和主鍵、外鍵約束。
3)用bcp導入數據
bcp yundns8885.dbo.admininfo in d:\tt\admininfo.out –U yundns8885 –P xxxxxxxx -S "sp500xxxxxxx.sqlserver.rds.aliyuncs.com,3433" –c –E –b 1000

4)在RDS數據庫上的表上加索引和主鍵、外鍵等。