Sql-Server

使用 SQL 作業進行備份時是否可以使數據庫離線?

  • September 24, 2019

我有一個場景,我必須生成數據庫的備份(SQL Server 2008)並恢復到新伺服器(SQL Server 2016)。在任何情況下都不應更改備份數據。所以我有兩種選擇,但我不確定它是如何工作的。(一切都只使用 SQL 作業。)

  1. 設置只讀數據庫並恢復到新的數據庫伺服器。

→ 是否可以在新伺服器上恢復只讀數據庫?目標伺服器已經有一個同名的讀寫(線上)數據庫。 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 行備份數據庫異常終止。

您可以查看分離/附加,但備份還原更可取。

引用自:https://dba.stackexchange.com/questions/249465