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


起因是因為客戶要把系統從阿里雲遷移到本地服務器,阿里雲上的數據庫版本是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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM