BACKUP DATABASE mydb
TO DISK = 'C:\DBBACK\mydb.BAK';
-- 路徑資料夾必須預先存在,文件名可含日期
USE master;
RESTORE DATABASE mydb
FROM DISK = 'C:\DBBACK\mydb.BAK'
WITH REPLACE;
-- 1. 建立 Kill 存儲過程
CREATE PROC KillSpid(@DBName varchar(100))
AS
BEGIN
DECLARE @SQL varchar(500), @SPID int;
SET @SQL = 'DECLARE CurrentID CURSOR FOR SELECT spid FROM sysprocesses WHERE dbid=db_id('''+@DBName+''')';
EXEC(@SQL);
OPEN CurrentID;
FETCH NEXT FROM CurrentID INTO @SPID;
WHILE @@FETCH_STATUS <> -1
BEGIN
EXEC('KILL '+@SPID);
FETCH NEXT FROM CurrentID INTO @SPID;
END
CLOSE CurrentID;
DEALLOCATE CurrentID;
END
-- 2. 執行殺進程
EXEC KillSpid 'mydb';
-- 3. 切單用戶模式
EXEC SP_DBOPTION @DBName, 'single user', 'true';
-- 4. 再執行 RESTORE
⚠️ 本文針對 SQL Server (T-SQL),非 MySQL。MySQL 請參考
mysqldump/mysqlbinlog方案。