SQL 資料庫備份與還原

2021-08-28 15:54:01 字數 2860 閱讀 5175

備份資料庫:

backup database northwind  to disk = 'c:\***xx.bak'

還原資料庫:

--返回由備份集內包含的資料庫和日誌檔案列表組成的結果集

restore filelistonly

from disk = 'c:\***x.bak'

--還原由backup備份的資料庫

restore database northwind

from disk = 'c:\***x.bak'

--指定還原後的資料庫物理檔名稱及路徑

restore database testdb

from disk = 'c:\***x.bak'

with

move 'northwind' to 'c:\test\testdb.mdf',

move 'northwind_log' to 'c:\test\testdb.ldf'

move 'logical_file_name' to 'operating_system_file_name'

指定應將給定的 logical_file_name 移到 operating_system_file_name。

預設情況下,logical_file_name 將還原到其原始位置。如果使用 restore

語句將資料庫複製到相同或不同的伺服器上,則可能需要使用 move 選項重

新定位資料庫檔案以避免與現有檔案衝突。可以在不同的 move 語句中指定

資料庫內的每個邏輯檔案。

--強制還原,加上replace引數,則在現有資料庫基礎上強制還原。

restore database testdb

from disk = 'c:\northwind.bak'

with replace,

move 'northwind' to 'c:\test\testdb.mdf',

move 'northwind_log' to 'c:\test\testdb.ldf'

對於還原資料庫過程中 出現失敗 主要是由於還原資料庫前沒有關閉掉該資料庫的工作執行緒。

--再master資料庫中 建立乙個 kill儲存過程 用來kill 需要還原資料庫的工作執行緒

use   master 

gocreate proc p_killspid

@dbname sysname --要關閉程序的資料庫名

as declare @s nvarchar(1000)

declare tb cursor local for

select s='kill '+cast(spid as varchar)

from master..sysprocesses

where dbid=db_id(@dbname)

open tb

fetch next from tb into @s

while @@fetch_status=0

begin

exec(@s)

fetch next from tb into @s

end

close tb

deallocate tb

go 還原資料庫 首先要再 其他庫上 use master

在master庫上 執行儲存過程 p_killspid 來kill掉 需要還原的資料庫 的工作執行緒

然後最後進行還原restore database

--還原資料庫最後整理版

use   master 

goif   exists(select 1   from   sysobjects   where   id=object_id('p_killspid')   and   xtype='p')  

begin  

exec('drop   procedure   p_killspid')  

end  

gocreate proc p_killspid

@dbname sysname

as declare @s nvarchar(1000)

declare tb cursor local for

select s='kill '+cast(spid as varchar)

from master..sysprocesses

where dbid=db_id(@dbname)

open tb

fetch next from tb into @s

while @@fetch_status=0

begin

exec(@s)

fetch next from tb into @s

end

close tb

deallocate tb

go use   master

goexec p_killspid 'dbserver'

restore database dbserver

from disk = 'c:\dbserver.bak'

go再實際應用的vc++或其他平台裡面 還原資料庫 注意兩方面:

1 在還原前 連線的資料庫 應該是 master   

use master語句  是無效的 必須用自己寫的oninitadoconn() 來連線資料庫

一般函式裡面 都在連線某個資料庫的基礎上oninitadoconn() 執行sql函式語句

所以還應該建立乙個oninitadoconnmaster() 連線資料庫函式 來專門用來給還原資料庫時候使用

2 並且 不能在 string 裡面不能含有 go 語句

可以分開 執行多次

SQL資料庫備份與還原

1.備份資料庫 bakup database db name to device with blocksize description db name資料庫備份 differential,expiredate retaindays password format noformat medianame...

資料庫備份與還原

在開發和資料庫有關的應用程式的時候,很多時候我們做的操作就是和資料庫打交道,而使用者最關心的也是資料,而一旦資料庫出現故障,我們事先又沒有做任何的預防措施,帶來的將會是災難性的錯誤。雖然資料庫本身提供備份和還原的功能,也可設定定期備份資料庫的操作,但是很多時候使用者並不知道怎樣操作,特別是還原。所以...

資料庫備份與還原

還原,將資料恢復到備份時的狀態。保護資料記錄。myisam innodb bdbmemory archive 批量插入的速度高低 高高非常高事務安全 支援 支援 全文索引 支援5.5版本支援 鎖機制 表鎖行鎖 頁鎖表鎖 行鎖儲存限制 沒有64tb沒有有 沒有b樹索引 支援支援 支援支援 雜湊索引 支...