zoukankan      html  css  js  c++  java
  • 复制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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    【BZOJ 1013】 [JSOI2008]球形空间产生器sphere
    【codeforces 779A】Pupils Redistribution
    【codeforces 779B】Weird Rounding
    【codeforces 779C】Dishonest Sellers
    Residential Gateway System for Home Network Service
    互联网大规模数据分析技术(自主模式)第五章 大数据平台与技术 第10讲 大数据处理平台Hadoop
    大数据系统基础(自主模式) 2.1大数据和云计算关系概述
    设计模式(10) 外观模式(FACADE)
    命令模式(Command Pattern)
    设计模式(三)建造者模式Builder(创建型)
  • 原文地址:https://www.cnblogs.com/zlf344242525/p/2957691.html
Copyright © 2011-2022 走看看