• 复制SqlServer数据库


    在目前的工作中需要解决复制整个SqlServer数据库的问题,复制的内容包括数据库大纲、数据库中的存储过程、函数、表结构、主外键关系以及表中的所有数据等,也就是说copy版本与原数据库一模一样。经过一段时间的摸索,找到的一个比较简单的解决方案是:
    (1)在复制数据库之前,先备份该数据库到文件。
    (2)依据备份文件创建新的数据库,并Restore即可。

       备份数据库可用如下Sql语句:

    string.Format("backup database {0} to disk = '{1}';", 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<stringobject> outParas = null;
                    Program.DataAccesser.GetSPAccesser(null).ExcuteNoneQuery("CopyDB", paraList, out outParas);
    作者:返回主页 linux运维-loring
    出处:http://www.cnblogs.com/zlf344242525/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    数据转换类型和算数运算符
    语言基础+数据类型
    JS(一)Prototype的使用
    Jquery EasyUI简介和数据的增删改查
    http简介
    《JavaScript语言精粹》笔记
    wcf
    简单工厂模式与抽象工厂模式
    <转载>C#中的特性(Attributes)
    <转载>C#IEnumerable和IEnumerator 详解
  • 原文地址:https://www.cnblogs.com/zlf344242525/p/2957691.html
Copyright © 2020-2023  润新知