在目前的工作中需要解決複製整個sqlserver資料庫的問題,複製的內容包括資料庫大綱、資料庫中的儲存過程、函式、表結構、主外來鍵關係以及表中的所有資料等,也就是說copy版本與原資料庫一模一樣。經過一段時間的摸索,找到的乙個比較簡單的解決方案是:
(1)在複製資料庫之前,先備份該資料庫到檔案。
(2)依據備份檔案建立新的資料庫,並restore即可。
備份資料庫可用如下sql語句:
string
.format(
"backup database to disk = '';
", dbname, bakfilepath)
依據備份檔案建立並restore新資料庫可以使用如下儲存過程實現:
create
procedure
copydb
(@newdbname
varchar(50
),
--新資料庫名稱
@dbdatadirpath
varchar
(100
), --
資料庫安裝的data資料夾目錄路徑
@souredbname
varchar
(100
), --
源資料庫名稱
@sourebackupfilepath
varchar
(100)--
源資料庫備份檔案的路徑)as
declare
@sql
varchar
(3000
)set
@sql='
create database '+
@newdbname+'
on(name='+
@souredbname+'
_data,
filename=
'''+
@dbdatadirpath
+@newdbname+'
_data.mdf'',
size = 10,
filegrowth = 15%
)log on
(name=
'''+
@souredbname+'
_log'',
filename=
'''+
@dbdatadirpath
+@newdbname+'
_log.ldf'',
size = 5mb,
maxsize = 25mb,
filegrowth = 5mb
)--開始還原
restore database '+
@newdbname+'
from disk=
'''+
@sourebackupfilepath
+'''
with replace
'exec
(@sql)go
測試的**如下:
ilist
<
spparameter
>
paralist
=new
list
<
spparameter
>
();spparameter para1
=new
spparameter(
"newdbname
", parameterdirection.input,
"easnew9");
paralist.add(para1);
spparameter para2
=new
spparameter(
"dbdatadirpath
", parameterdirection.input,
@"c:\program files\microsoft sql server\mssql\data\
");paralist.add(para2);
spparameter para3
=new
spparameter(
"souredbname
", parameterdirection.input,
"autoschedulersystem
");paralist.add(para3);
spparameter para4
=new
spparameter(
"sourebackupfilepath
", parameterdirection.input,
@"d:\sqldatabase\autoschedulersystem
");paralist.add(para4);
idictionary
<
string
, object
>
outparas
=null
;program.dataaccesser.getspaccesser(
null
).excutenonequery(
"copydb
", paralist,
outoutparas);
複製SqlServer資料庫
在目前的工作中需要解決複製整個sqlserver資料庫的問題,複製的內容包括資料庫大綱 資料庫中的儲存過程 函式 表結構 主外來鍵關係以及表中的所有資料等,也就是說copy版本與原資料庫一模一樣。經過一段時間的摸索,找到的乙個比較簡單的解決方案是 1 在複製資料庫之前,先備份該資料庫到檔案。2 依據...
SQL Server之資料庫複製
sql server中備份,除了映象方式外還有複製方式。sqlserver 2012中還引進了alwayson,並且官方建議不再使用映象 資料庫複製 概述 複製是一組技術,它將資料和資料庫物件從乙個資料庫複製和分發到另乙個資料庫,然後在資料庫之間進行同步以保持一致性。使用複製,可以在區域網和廣域網 ...
SQL Server 複製資料庫任務
假設你要生產環境下的資料做相應的測試,比如修改及測試儲存過程 更改和優化索引等。但是你使用者在連線資料庫的情況下,你又不能斷開資料庫的連線。如何取得資料庫的副本呢?一.利用資料庫任務中的複製資料庫選單 示例是從預設例項 mssqlserver 向命名例項 mysqlserver 複製northwin...