採取Backup Restore的方式複製資料庫

2021-07-09 06:31:46 字數 2924 閱讀 2684

**:

sql server 2008如何copy database:

方法一:使用microsoft sql server management studio中的copy database wizard來輔助完成。(很容易失敗)

方法二:採取backup/restore的方式(推薦)

a.備份資料庫到磁碟

[sql]view plain

copy

backup database source_database   

to disk = 'd:\backup\source_database.bak'

with format;  

b.檢視備份檔案的邏輯檔案

[sql]view plain

copy

restore filelistonly  

from disk = 'd:\backup\source_database.bak';  

c.建立目標資料庫

[sql]view plain

copy

create

database target_database;  

d.從磁碟複製資料庫

[sql]view plain

copy

/*  

利用bak恢復資料庫,強制還原(replace)  

stats = 10 每完成10%顯示一條記錄  

source_database和source_database_log是上面d:\backup\source_database.bak裡的邏輯檔案  

*/  

restore database target_database  

from disk='d:\backup\source_database.bak'

with

move

'source_database'

to'c:\program files\microsoft sql server\mssql10_50.mssqlserver\mssql\data\target_database.mdf',  

move

'source_database_log'

to'c:\program files\microsoft sql server\mssql10_50.mssqlserver\mssql\data\target_database_log.ldf',  

stats = 10,replace

附:例項:

use [database_name]

go/****** object:  storedprocedure [dbo].[copydatabase]     ******/

set ansi_nulls off

goset quoted_identifier off

go/****** 物件: 儲存過程 dbo.copydatabase     ******/

/****** 物件: 儲存過程 dbo.copydatabase     ******/

create procedure [dbo].[copydatabase]

(@sourcedbname varchar(50),

@newdbname varchar(50))

asdeclare @tempdevice varchar(50)

declare @tempbkupfile varchar(50)

declare @tempbkpath varchar(200)

declare @datafilepath varchar(200)

declare @logfilepath varchar(200)

declare @sdatafile varchar(100)

declare @slogfile varchar(100)

set @sdatafile=@sourcedbname+"_data" /*檢視備份檔案的邏輯檔案restore filelistonly from disk =tempbkpath+tempbkupfile'; 特別重要,此處就按檢視結果設定,下面slogfile相同的道理*/

set @slogfile=@sourcedbname+"_log"

set @datafilepath="d:\program files\microsoft sql server\mssql10_50.mssqlserver\mssql\data\"+@newdbname+".mdf"

set @logfilepath="d:\program files\microsoft sql server\mssql10_50.mssqlserver\mssql\data\"+@newdbname+".ldf"

set @tempbkupfile=@newdbname+".dat"

set @tempbkpath="d:\program files\microsoft sql server\mssql10_50.mssqlserver\mssql\backup\"+@tempbkupfile

set @tempdevice=@newdbname+"back"

exec sp_addumpdevice "disk", @tempdevice,@tempbkpath

backup database @sourcedbname to @tempdevice

restore database @newdbname   from @tempdevice   with recovery,

move  @sdatafile to @datafilepath,

move  @slogfile to  @logfilepath

exec sp_dropdevice  @tempdevice,"delfile"

go

採取行動,解決問題

陶行知很久以前就說過 知易行難 就是說我們很容易獲取知識,但是要真正執行起來卻是很難的事情。我們很多人,都知道自己有問題。例如喜歡看電視,衣服隨便亂扔,但是要改變這些習慣是非常困難的。為什麼我們沒有辦法解決這些問題呢,就是因為我們知道問題,但是我們沒有採取行動。這一思想貫徹到日常工作中,我們每次會議...

看見問題,必須採取行動

看見問題,必須採取行動 我已經觀察並檢查了專案組的 出人意料,我以為不能勝任工作的同事居然 寫的有板有眼,注釋也清清楚楚,雖然工作量並沒有完成.真讓我喜出望外,是不是我上次批評的過分了?幸好我沒有立即表態,將我檢查的情況和專案負責人一一核對,這才發現我們那位同事的 原來是專案負責人寫的,因為他寫不出...

採取策略加強資料恢復計畫

採取策略加強資料恢復計畫 制定資料恢復策略的關鍵就是要主動出擊。誰會喜歡在計算機遭受破壞之後而手忙腳亂的尋找並恢復資料呢,建立系統來保護您的公司免受資料丟失才是王道。令人驚訝的是,儘管面臨丟失資料或不信任資料完整性的巨大風險,依然有許多公司認為,它們無法負擔得起全面的災難恢復計畫所耗費的成本。但其實...