適用於:SQL Server 2022 (16.x) 和更新版本
本快速入門可協助您了解如何將備份寫入至與 S3 相容的物件儲存體以及從中還原。
注意
SQL Server 2022 引進了對備份至與 S3 相容的物件儲存體以及從中還原的支援。 SQL Server 2019 和舊版不支援此功能。
必要條件
若要完成本快速入門,您必須熟悉 SQL Server 備份與還原概念以及 Transact-SQL (T-SQL) 語法。 您需要 S3 端點、SQL Server Management Studio (SSMS),以及執行 SQL Server 或 Azure SQL 受控執行個體之伺服器的存取權。 此外,用於發出 BACKUP 和 RESTORE 指令的帳號,應屬於 db_backupoperator 資料庫角色,且具有 ALTER ANY CREDENTIAL 權限,並具備 CREATE DATABASE 權限,以便將 RESTORE 還原到新的資料庫;或者,該帳號必須是 sysadmin 或 dbcreator 固定伺服器角色的成員之一;若是還原到現有資料庫上,則必須是該資料庫的擁有者(dbo)。
- 建立 S3 端點。
- 安裝 SQL Server Management Studio。
- 安裝 SQL Server 2022 Developer 版本,或使用透過 Azure SQL 虛擬機器或點對站建立的連線來部署 Azure SQL 受控執行個體。
- 把使用者帳號指派為 db_backupoperator 角色,並授予 ALTER ANY CREDENTIAL 權限。
- 將使用者帳戶指派給 sysadmin 或 dbcreator 固定角色,或讓使用者成為現有資料庫的擁有者。
建立測試資料庫
在此步驟中,使用 SQL Server Management Studio (SSMS) 來建立測試資料庫。
啟動 SQL Server Management Studio (SSMS) 並連線至 SQL Server 執行個體。
開啟 [新增查詢] 視窗。
執行下列 T-SQL 程式碼以建立測試資料庫。 刷新 [物件總管] 中的 [資料庫] 節點以查看您的新資料庫。 在 SQL 受控執行個體上建立的新資料庫會自動啟用 TDE,因此您將必須加以停用以繼續。
USE [master]; GO -- Create database CREATE DATABASE [SQLTestDB]; GO -- Create table in database USE [SQLTestDB]; GO CREATE TABLE SQLTest ( ID INT NOT NULL PRIMARY KEY, c1 VARCHAR(100) NOT NULL, dt1 DATETIME NOT NULL DEFAULT GETDATE() ); GO -- Populate table USE [SQLTestDB]; GO INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1'); INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2'); INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3'); INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4'); INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5'); GO SELECT * FROM SQLTest; GO -- Disable TDE for newly-created databases on SQL Managed Instance USE [SQLTestDB]; GO ALTER DATABASE [SQLTestDB] SET ENCRYPTION OFF; GO DROP DATABASE ENCRYPTION KEY; GO
建立認證
若要建立用於驗證的 SQL Server 認證,請依照下列步驟進行:
啟動 SQL Server Management Studio (SSMS) 並連線至 SQL Server 執行個體。
開啟 [新增查詢] 視窗。
建立伺服器層級認證。 認證的名稱取決於與 S3 相容的儲存體平台。 與 PolyBase 資料庫範圍的認證不同,備份/還原認證儲存在執行個體層級。 搭配與 S3 相容的儲存體使用時,認證必須根據 URL 路徑來命名。
CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>] WITH IDENTITY = 'S3 Access Key', SECRET = '<AccessKeyID>:<SecretKeyID>'; GO
注意
欲了解更多伺服器憑證 S3 相容儲存的範例,請參見 CREATE CREDENTIAL (Transact-SQL)。
備份資料庫
在此步驟中,使用 T-SQL 將資料庫 SQLTestDB 備份至與 S3 相容的物件儲存體。
使用 T-SQL 透過執行下列命令以備份您的資料庫:
USE [master];
GO
BACKUP DATABASE [SQLTestDB]
TO URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
WITH FORMAT /* overwrite any existing backup sets */
, STATS = 10
, COMPRESSION;
刪除資料庫
在此步驟中,請先刪除資料庫,然後再執行還原。 此步驟僅適用於此教學課程的目的,在一般資料庫管理程序中不太可能使用。 您可以略過此步驟,但是在 Azure SQL 受控執行個體上進行還原時,您將需要變更資料庫的名稱,或執行還原命令 WITH REPLACE,以便在內部部署環境中成功還原資料庫。
- 展開 [資料庫] 節點於 [物件總管] 中,右鍵點選 資料庫,然後選擇刪除以啟動 [刪除物件] 精靈。
- 在 Azure SQL 受控執行個體上,選取 [確定] 以刪除資料庫。 在內部部署環境中,選取 [關閉現有的連接] 旁的核取方塊並選取 [確定] 以刪除資料庫。
還原資料庫
在此步驟中,使用 SQL Server Management Studio 中的 GUI 或使用 Transact-SQL 來還原資料庫。
以滑鼠右鍵按一下 SQL Server Management Studio 內 [物件總管] 中的 [資料庫] 節點,然後選取 [還原資料庫]。
選取 [裝置],然後選取省略符號 (...) 以選擇裝置。
從備份媒體類型下拉選單選擇網址,然後選擇新增以新增你的裝置。
輸入虛擬主機 URL,並貼上與 S3 相容的物件儲存體的祕密金鑰 ID 和存取金鑰 ID。
選取 [確定] 以選取備份檔案位置。
選取 [確定] 以關閉 [選取備份裝置] 對話方塊。
選取 [確定] 以還原您的資料庫。