1. 程式人生 > >MSSQL數據庫高版本遷移到低版本

MSSQL數據庫高版本遷移到低版本

身份驗證 window medium mic sof sel 查詢 ati statement

起因是因為客戶要把系統從阿裏雲遷移到本地服務器,阿裏雲上的數據庫版本是MSSQL2016,客戶提供的服務器是Server2008R2的,問題就來了,Server2008不支持2016版本,最後只能裝的2012版本,那就需要從2016遷移到2012.

過程是一波三折,網上流傳選擇一下兼容模式,如下圖

技術分享

然後再去備份,不知道別人是怎麽成功的或者是他們自己也沒有成功,我反正最後還是報錯,低版本不支持高版本。

最後沒本法只能采用生成架構跟數據的腳本來進行導入了

技術分享

好吧,好在我們數據量還不是很大,sql文件導出來也就不到1g。

貌似100M以上的sql文件在manager studio裏面是會報內存不足的,解決的辦法其實很簡單,使用cmd下的osql命令

,多大都不怕,唯一擔心的只是時間長短而已。

osql –S localhost –d mydb –E –i D:\bf.sql 搞定

技術分享


1、使用osql執行單個 Transact-SQL 語句

在鍵入cmd與下面這一個類似的命令:

osql -E -q "Transact-SQL statement"

例如:sql -E -q "use myDB select * from myTable"

其中 -E 表示使用 Microsoft Windows NT 身份驗證。

也可以使用sa賬戶,具體可以看看上面的命令!

而-q 表示運行 Transact-SQL 語句,但是在查詢結束時不退出 osql。

如要運行 Transact-SQL 語句並退出 osql,請使用 -Q 參數來代替 -q。

2、使用osql執行一個大腳本文件

將該工具指向一個腳本文件,步驟:

a.創建一個包含一批 Transact-SQL 語句的腳本文件(如 myfile.sql)。

b.打開命令提示符,鍵入與下面類似的一個命令,然後按 ENTER 鍵:

osql -E -i input_file

其中input_file 是腳本文件及其完整路徑。例如,如果腳本文件 myfile.sql 在 C:\users文件夾中,

請將參數 myfile 替換為 C:\users\myfile.sql。

該腳本文件的運行結果將出現在控制臺窗口中。

如果您想將運行結果定向到一個文件,請向上述命令中添加 -o output_file 參數。例如:

osql -E -i input_file -o output_file

其中output_file 是輸出文件及其完整路徑。

小插曲:過程中遇到無法對 數據庫‘UDS‘ 執行 刪除,因為它正用於復制。 (.Net SqlClient Data Provider)

解決方案記錄一下:

sp_removedbreplication ‘UDS‘

DROP DATABASE UDS

MSSQL數據庫高版本遷移到低版本