1、適用場景
源端數據庫是SQL Server 2005 及以上。(SQL Server 2000未測試。)
數據文件總大小在10G之內。
能夠在低峯期停應用。
2、導出步驟
一、軟件準備
若是源端SQL Server版本低於2008,則下載一個2008的客戶端工具,在任意一臺機器上安裝。
下載Microsoft® SQL Server® 2008 Management Studio
安裝,忽略各類提示,都選默認選項。
二、運行SQL Server 2008 Management Studio,鏈接到源數據庫。
三、導出目標數據庫的生成腳本
彈出「腳本嚮導」的對話框,按提示選擇下一步
選擇數據庫
不要勾選「爲所選數據庫中的有所對象編寫腳本」
選擇腳本選項,設置「編寫數據的腳本」爲TRUE,其餘選項根據實際須要修改。下圖是建議值。簡單起見除了建立數據庫的腳本,登陸腳本,編寫統計信息,生成依賴對象腳本這幾項必定要設置爲FALSE,其餘均可以設置爲TRUE。
選擇對象類型,注意不要選「用戶和數據庫角色」
選擇存儲過程(若是沒有,就直接跳過)
選擇表,不用遷移的表就不要選了
選擇視圖,若是沒有就跳過
選擇輸出選項,能夠選擇導出到一個文件,也能夠選擇每一個對象導出一個文件。數據量很是大的狀況下建議每一個對象導出一個文件。
最終確認
等待導出,數據量大的狀況下,時間會比較久。
四、新建到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. 驗證數據(略)
3、可能遇到的問題:
一、 若是導出腳本里有亂碼,請檢查導出文件是不是Unicode格式
二、若是導入新庫後查詢有亂碼,請檢查新庫和老庫的服務器排序規則是否一致。
三、大表的導入慢問題。
當表的數據量很是大的時候,如超過百萬。上面的導入效率可能很是的低。這時候能夠用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數據庫上的表上加索引和主鍵、外鍵等。