需求很簡單:我要從A機器裡的db,複製到B機器裡。
其實就是備份/還原嘛~聽起來沒什麼了不起。
但是DBMS就是一種會把聽起來很簡單的事情搞得很複雜的東西。(好啦,我知道「備份/還原」都是被抽象化的結果,裡面藏著很複雜的邏輯。)
備份:
備份上自己沒遇到什麼問題。
在SQL Server上要備份下來的資料庫上面按右鍵→工作→備份。會跑出下面那個畫面。
出來的備份檔應該都會是.bak檔,然後是放在A機器裡。
接著,把這個.bak檔複製到B機器裡。這個別問我啊,隨身碟、檔案分享、FTP…什麼都好。
還原:
還原的部分就沒這麼順遂了。
同樣的,在B機器的SQL Server上要還原的資料庫上按右鍵→工作→還原→資料庫。會跑出下面的畫面。
設定一下.bak檔的路徑之後就開始了,期待它完成,我今天的工作就結束了。
問題就是他媽的沒這麼爽,才按下去它就跑出一個Exception,上面寫「備份組包含現有的xxx資料庫以外的資料庫備份問題」之類的訊息。
我太懶了,我懶得寫找解法碰釘子的過程,直接寫怎麼處理。
1. 先把DB弄離線。
ALTER DATABASE [dbname] SET offline
2. 執行下列指令:
restore database DBName from disk = 'D:\DBName.bak' with move 'DBName' to 'C:\Program Files\...\xxx.mdf', move 'DBName_log' to 'C:\Program Files\...\xxx_log.LDF', NoRecovery, Replace go
留意一下.mdf和.ldf檔路徑就好。
如果執行成功了,就會出現「幾秒內成功處理了 多少頁(0.000 MB/sec)。
3. 再把DB弄上線。
ALTER DATABASE [dbname] SET online
4. 還原!
資料庫上按右鍵→工作→還原→資料庫,.bak路徑設好、勾還原,按確定。
5. 忐忑不安地等待,搞定就開心~ 搞不定就GG。
2 則留言:
你的第二步驟不就還原DB了?
為什麼還要最後還原那個步驟?
第二步做完之後只會在DB上面寫正在還原,不會真的完成(其實我沒讓第二個步驟很久,也許真的正在跑)
要把整個流程跑完,我是還加了後面弄上線和還原的步驟
張貼留言