Sql-Server
使用 SQL 作業進行備份時是否可以使數據庫離線?
我有一個場景,我必須生成數據庫的備份(SQL Server 2008)並恢復到新伺服器(SQL Server 2016)。在任何情況下都不應更改備份數據。所以我有兩種選擇,但我不確定它是如何工作的。(一切都只使用 SQL 作業。)
- 設置只讀數據庫並恢復到新的數據庫伺服器。
→ 是否可以在新伺服器上恢復只讀數據庫?目標伺服器已經有一個同名的讀寫(線上)數據庫。 2. 設置離線數據庫並恢復到新的數據庫伺服器。
→ 是否可以在新伺服器中恢復離線數據庫?目標伺服器已經有一個同名的線上(讀寫)數據庫。
→ 是否可以在新伺服器中恢復只讀數據庫?
是的
一個例子:
CREATE DATABASE ReadOnlyDB; GO ALTER DATABASE ReadOnlyDB SET READ_ONLY; BACKUP DATABASE ReadOnlyDB TO disk = '\\share\readonly.Bak';
目標伺服器已經有一個同名的讀寫(線上)數據庫。
不完全確定您的意思,但是如果您願意,可以使用不同的名稱恢復數據庫,記住之後刪除只讀屬性。
RESTORE DATABASE ReadOnlyDB2 FROM DISK = '\\share\readonly.Bak' WITH MOVE 'ReadOnlyDB' to '\Datalocation\ReadOnlyDB2.mdf', MOVE 'ReadOnlyDB_log' to '\Loglocation\ReadOnlyDB_log2.ldf', STATS = 5; GO ALTER DATABASE ReadOnlyDB2 SET READ_WRITE;
您還可以使用 REPLACE 關鍵字替換現有數據庫。
→ 是否可以在新伺服器中恢復離線數據庫?
不,這是不可能的,因為 sql server 會從數據庫文件中刪除所有句柄,並且在離線時無法訪問它。
ALTER DATABASE ReadOnlyDB SET OFFLINE WITH ROLLBACK IMMEDIATE; GO BACKUP DATABASE ReadOnlyDB TO disk = 'C:\temp\readonlyOffline.Bak';
消息 942,級別 14,狀態 4,第 10 行數據庫“ReadOnlyDB”無法打開,因為它處於離線狀態。消息 3013,級別 16,狀態 1,第 10 行備份數據庫異常終止。
您可以查看分離/附加,但備份還原更可取。