資料庫因為胖胖的讓公司測試環境很擠,但想透過上個月月初備份檔(.bak)還原幾個資料表來比較測試結果,測試環境的空間及資源都不足,當初也沒把幾個資料表放在指定檔案群組(File Group),這次不能使用還原檔案群組招式。
來筆記付費的Third party工具,透過ApexSQL Recover工具,不需要還原整個資料庫就能還原單一資料表。
測試機的SQL版本是SQL Server 2017
建立環境
建立資料庫,內含迪士尼公主與漫威超級英雄資料表,資料表各有8筆資料
CREATE DATABASE RestoreSingleTableDb
use RestoreSingleTableDb
DROP TABLE IF EXISTS DisneyPricess
CREATE TABLE DisneyPricess(
ID INT identity, NAME VARCHAR(20)
)
DROP TABLE IF EXISTS MarvellHeroes
CREATE TABLE MarvellHeroes(
ID INT identity, NAME VARCHAR(20)
)
INSERT INTO DisneyPricess
VALUES('Snow White'),('Cinderella'),('Aurora'),('Ariel'),('Belle'),('Jasmine'),('Pocahontas'),('Rapunzel')
INSERT INTO MarvellHeroes
VALUES('Captain America'),('Iron Man'),('The Hulk'),('Spider-Man'),('Mister Fantastic'),('Hawkeye'),('Wolverine'),('Thor')
SELECT * FROM DisneyPricess
SELECT * FROM MarvellHeroes
8個迪士尼公主 x 8個漫威超級英雄
備份資料庫
BACKUP DATABASE [RestoreSingleTableDb]
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Backup\RestoreSingleTableDb.bak'
WITH NOFORMAT, NOINIT, NAME = N'RestoreSingleTableDb-完整 資料庫 備份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
從.bak還原單一資料表
假設迪士尼公主資料表太大,我們只想還原漫威超級英雄資料表到測試環境來。
1.打開apexSQL
2.選擇備份資料檔(.bak),也可以依需要附加差異備份或LOG備份檔案
3.選擇要還原的資料表
4.選擇還原的目的地: 可以選擇產生指令碼或選擇目的地資料庫伺服器。
這邊我們新開一個資料庫ApexSQLRecover_1911184990,確認好選項後按下一步。
選擇產出資料表結構及資料
ok,執行完成了! 工具告訴我們處理了8筆
按右鍵,重新整理管理工具的物件總管
果然多了一個ApexSQLRecover_1911184990資料庫,而且只內含一個資料表MarvellHeroes
驗證看看
use [ApexSQLRecover_1911184990]
select * from [dbo].[MarvellHeroes]
如果是試用版,每10筆只會幫我們產生1筆。
只剩1個漫威超級英雄來到人間了~~
如果是完整版,就會全部出現
單買一套$1999美金,含稅$2,099美金。