我試圖將數據庫從舊的,即將死亡的服務器遷移到新的服務器。無法將SQL Server數據庫還原到其他服務器
在互聯網上,我發現了Andrew Morgan的兩個方便的scripts,用於保存和恢復數據庫。備份部分運行良好;我通過在網絡上共享文件夾並讓腳本將數據庫備份到unc路徑,從而在我的本地PC上獲得我的db.bak
。
不幸的是,恢復部分將無法正常工作,我不知道爲什麼(我的高級DEV也不知道,他是一個知道SQL aorund的人)。
我打電話這樣說:
Restore-SQLdatabase -SQLServer "NEWSERVER\MSSQLSERVER" -SQLDatabase "DBToMigrate" -Path "C:\Backup\DBToMigrate.bak" -SQLusername "sa" -SQLpassword "IMAPLAINTEXTPASSWORD"
sa
具有對數據庫的完整的電源。
它失敗,出現以下消息:
嘗試連接到指定的SQL服務器:成功
WARNUNG:一個異常被抓獲,同時恢復數據庫!
WARNUNG:Ausnahme beim Aufrufen von「ExecuteNonQuery」mit 0參數(en):「''附近的語法不正確'''
關鍵字'with'附近的語法錯誤如果此語句是公用表表達式,則xmlnamespaces子句或一個更改跟蹤上下文子句,以前的語句必須以分號結尾。「
WARNUNG:嘗試恢復數據庫
的部分問題是:
ALTER DATABASE $SQLDatabase
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
RESTORE DATABASE $SQLDatabase
FROM DISK = '$path'
WITH REPLACE
當執行後,素文字獲取異常。
我試着把CREATE DATABASE $SQLDatabase
放在ALTER
的部分前面,但是在創建db之後,它說「沿着」那個數據庫名已經存在「的地方。
此外,省略了部分改變和不斷變化的那部分
RESTORE DATABASE $SQLDatabase FROM DISK = '$path' WITH REPLACE
它說,一些有關的數據庫文件,給了我,我想是完全不相關,其中舊服務器上的路徑(時,但似乎有可能是我的下一個問題),無法找到(當然,因爲我在我的本地機器上,現在沒有這些)。
我正在做一個腳本,因爲我們需要遷移大約15個數據庫,也因爲我想學習如何在不使用SSMS嚮導的情況下做這些事情。
更新:我把撇號改爲正常的,這確實是錯誤。現在我只需要獲取db文件的文件名,以便我可以將它們MOVE
傳送到新服務器。
'「不正確附近有語法''' - 如果你複製/粘貼腳本,用'''替換任何奇特的引號(''') - 儘管使用SSMS恢復工具可能是一個更好的主意。 –
爲什麼在恢復之前創建數據庫?如果數據庫是實時數據庫,並且需要斷開所有用戶,則需要將數據庫置於single_user中。不要創建,只需從數據庫中恢復數據庫你的備份和寫入文件的新路徑 – sepupic
@ AlexK.thanks,這確實是(第一)錯誤! – Squirrelkiller