加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

推荐复制SqlServer数据库的方法

发布时间:2023-08-11 15:01:02 所属栏目:MsSql教程 来源:
导读:在目前的工作中需要解决复制整个sqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是说copy版本与原数据库一模一样。经过一段时间的摸索,
在目前的工作中需要解决复制整个sqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是说copy版本与原数据库一模一样。经过一段时间的摸索,找到的一个比较简单的解决方案是:
 
(1)在复制数据库之前,先备份该数据库到文件。
 
(2)依据备份文件创建新的数据库,并Restore即可。
 
备份数据库可用如下sql语句:
 
<div class="codetitle"><a style="CURSOR: pointer" data="39527" class="copybut" id="copybut39527" onclick="doCopy('code39527')"> 代码如下:
 
<div class="codebody" id="code39527">
 
string.Format("backupdatabase{0}todisk='{1}';",dbname,bakFilePath)
 
依据备份文件创建并Restore新数据库可以使用如下存储过程实现:
 
<div class="codetitle"><a style="CURSOR: pointer" data="31241" class="copybut" id="copybut31241" onclick="doCopy('code31241')"> 代码如下:
 
<div class="codebody" id="code31241">
 
CREATEPROCEDUREcopyDB
 
(
 
@newdbnamevarchar(50),--新数据库名称
 
@dbDataDirPathvarchar(100),--数据库安装的Data文件夹目录路径
 
@souredbnamevarchar(100),--源数据库名称
 
@soureBackupFilePATHvarchar(100)--源数据库备份文件的路径
 
)
 
AS
 
declare@sqlvarchar(3000)
 
set@sql='
 
createdatabase'+@newdbname+'
 
ON
 
(
 
name='+@souredbname+'_Data,
 
filename='''+@dbDataDirPath+@newdbname+'_Data.mdf'',
 
SIZE=10,
 
FILEGROWTH=15%
 
)
 
logoN
 
(
 
name='''+@souredbname+'_Log'',
 
filename='''+@dbDataDirPath+@newdbname+'_Log.LDF'',
 
SIZE=5MB,
 
MAXSIZE=25MB,
 
FILEGROWTH=5MB
 
)
 
--开始还原
 
RESTOREDATABASE'+@newdbname+'fromdisk='''+@soureBackupFilePATH+'''WITHREPLACE
 
'
 
exec(@sql)
 
GO
 
测试的代码如下:
 
<div class="codetitle"><a style="CURSOR: pointer" data="9215" class="copybut" id="copybut9215" onclick="doCopy('code9215')"> 代码如下:
 
<div class="codebody" id="code9215">
 
IListparaList=newList();
 
SPParameterpara1=newSPParameter("newdbname",ParameterDirection.Input,"EASNew9");
 
paraList.Add(para1);
 
SPParameterpara2=newSPParameter("dbDataDirPath",@"C:\ProgramFiles\MicrosoftsqlServer\MSsql\Data\");
 
paraList.Add(para2);
 
SPParameterpara3=newSPParameter("souredbname","AutoSchedulerSystem");
 
paraList.Add(para3);
 
SPParameterpara4=newSPParameter("soureBackupFilePATH",@"d:\sqlDatabase\AutoSchedulerSystem");
 
paraList.Add(para4);
 
IDictionary<string,object>outParas=null;
 
Program.DataAccesser.GetSPAccesser(null).ExcuteNoneQuery("copyDB",paraList,outoutParas);
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章