如何将一个包含多个数据库备份的bak文件还原到数据库中

如何将一个包含多个数据库备份的bak文件还原到数据库中,第1张

1右击SQL Server 2000实例下的“数据库文件夹。就是master等数据库上一级的那个图标。选择“所有任务”,“还原数据库”

2在“还原为数据库”中填上你希望恢复的数据库名字。这个名字应该与你的源码中使用的数据库名字一致。

3在d出的对话框中,选“从设备”

4点击“选择设备”

5点击“添加”

6点击“文件名”文本框右侧的“”按钮,选中你的“BAK”文件,并点击确定回到“选择还原设备”对话框。

7点击确定回到“还原数据库”对话框。

8点击“选项”选项卡

9将所有“移至物理文件名”下面的路径,改为你想还原后的将数据库文件保存到的路径。如果你不希望改变,可以直接点击确定。这时便恢复成功了。

数据库最直接的备份方法就是使用自带的mysqldump命令进行备份。

1、 mysqldump命令备份数据

在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:

#MySQLdump常用

mysqldump -u root -p --databases 数据库1 数据库2 > xxxsql

2、 mysqldump常用 *** 作实例

21备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydbsql

22备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydbsql

23 备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydbsql

24 备份单个数据库的数据和结构(,数据库名mydb)

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydbsql

25 备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydbsql

26 备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydbsql2

27 备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydbsql

28 一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydbsql

首先,你所用的数据库是什么数据库?备份库可以建立N多,比如oracle数据库,你可以用exp命令整库导出成dmp文件。如果你是acces数据库,直接复制文件另存到别的地方就是备份了。

1测试环境:Windows Server 2008 R2 SP1 + SQL Server 2008 R2 SP1

2安装FTP 组件,FTP全部打勾,并在IIS里面新建FTP站点,并设置,这里要注意的地方有两点。

第一:要设置一个正常的登录用户,有密码和名字的那种,测试的时候,我同时也开启了匿名用户

第二:就是FTP 的目录调整好,一般可能会调整两次以上,做好再调整的准备,原则是,所制定的位置就是发布服务器的生成位置,并在设置的时候设置正确。

3防火墙,防火墙要设置好,避免测试的时候,制造麻烦。可以先关闭。

4Hosts ,这里要在两台服务器Host里面把自己和对方的计算机名字对应iP地址都写在双方的两个服务器里面,用与 在连接的时候使用计算机名进行连接,看到很多网友都说要使用计算机名登录,而不是IP地址。

5尽量用Windows 身份验证,同时要开启sa 的登录方式。用户必须在sysadmin 组里面,这里说的组是SQL Server 的用户组。

6两台电脑一定要启动 SQL Server 代理

7建立的所有数据库的恢复模式为:完整

8SQL Server 的安装 一定要记得 ,将 数据库复制等复选框都选择上,之选一个关系数据库是不行的,其包含的复选框也都选择上。

/

--用BCP试试,不行再用下面的存储过程

EXEC masterxp_cmdshell 'bcp "select from testdboApo_village"

queryout "c:/Apo_SFZxlsx" -c -S"服务器" -U"sa" -P"密码"'

/

--这是用C#写的存储过程,不知道你会不会编译到SQL Server

--在数据库这样调用就是了

--Exec BulkCopyToXls 'SQL查询语句','路径','文件名',最大记录数

--Exec BulkCopyToXls 'select from 表','G:\Test','Table',60000

using System;

using SystemData;

using SystemDataSqlClient;

using SystemDataSqlTypes;

using MicrosoftSqlServerServer;

public partial class myProcedure

{

    [MicrosoftSqlServerServerSqlProcedure]

    public static void BulkCopyToXls(SqlString sql, SqlString savePath, SqlString tableName, SqlInt32 maxRecordCount)

    {

        if (sqlIsNull || savePathIsNull || tableNameIsNull)

        {

            SqlContextPipeSend(" 输入信息不完整!");

        }

        //每个excel文件最大容纳65534

        ushort _maxRecordCount = ushortMaxValue - 1;

        if (maxRecordCountIsNull == false && maxRecordCountValue < ushortMaxValue && maxRecordCountValue > 0)

            _maxRecordCount = (ushort)maxRecordCountValue;

        ExportXls(sqlValue, savePathValue, tableNameValue, _maxRecordCount);

    }

    private static void ExportXls(string sql, string savePath, string tableName, SystemUInt16 maxRecordCount)

    {

        //创建文件路径

        if (SystemIODirectoryExists(savePath) == false)

        {

            SystemIODirectoryCreateDirectory(savePath);

        }

        using (SqlConnection conn = new SqlConnection("context connection=true"))

        {

            connOpen();

            using (SqlCommand command = connCreateCommand())

            {

                commandCommandText = sql;

                using (SqlDataReader reader = commandExecuteReader())

                {

                    int i = 0;

                    int totalCount = 0;

                    int tick = SystemEnvironmentTickCount;

                    SqlContextPipeSend(" 开始导出数据");

                    while (true)

                    {

                        string fileName = stringFormat(@"{0}/{1}{2}xls", savePath, tableName, i++);

                        int iExp = Write(reader, maxRecordCount, fileName);

                        long size = new SystemIOFileInfo(fileName)Length;

                        totalCount += iExp;

                        SqlContextPipeSend(stringFormat(" 文件{0}, 共{1} 条, 大小{2} 字节", fileName, iExp, sizeToString("###,###")));

                        if (iExp < maxRecordCount) break;

                    }

                    tick = SystemEnvironmentTickCount - tick;

                    SqlContextPipeSend(" 导出数据完成");

                    SqlContextPipeSend("-------");

                    SqlContextPipeSend(stringFormat(" 共{0} 条数据,耗时{1}ms", totalCount, tick));

                }

            }

        }

    }  private static void WriteObject(ExcelWriter writer, object obj, SystemUInt16 x, SystemUInt16 y)

    {

        //判断写数字还是写字符

        string type = objGetType()NameToString();

        switch (type)

        {

            case "SqlBoolean":

            case "SqlByte":

            case "SqlDecimal":

            case "SqlDouble":

            case "SqlInt16":

            case "SqlInt32":

            case "SqlInt64":

            case "SqlMoney":

            case "SqlSingle":

                if (objToString()ToLower() == "null")

                    writerWriteString(x, y, objToString());

                else

                    writerWriteNumber(x, y, ConvertToDouble(objToString()));

                break;

            default:

                writerWriteString(x, y, objToString());

                break;

        }

    }

   

    private static int Write(SqlDataReader reader, SystemUInt16 count, string fileName)

    {

        int iExp = count;

        ExcelWriter writer = new ExcelWriter(fileName);

        writerBeginWrite();

        //写字段信息

        for (SystemUInt16 j = 0; j < readerFieldCount; j++)

        {

            writerWriteString(0, j, readerGetName(j));

        }

        //循环一行一行读入数据

        for (SystemUInt16 i = 1; i <= count; i++)

        {

            if (readerRead() == false)

            {

                iExp = i - 1;

                break;

            }

            //循环一格一格写入数据

            for (SystemUInt16 j = 0; j < readerFieldCount; j++)

            {

                WriteObject(writer, readerGetSqlValue(j), i, j);

            }

        }

        writerEndWrite();

        return iExp;

    }

   

    public class ExcelWriter

    {

        SystemIOFileStream _wirter;

        //创建文件

        public ExcelWriter(string strPath)

        {

            _wirter = new SystemIOFileStream(strPath, SystemIOFileModeOpenOrCreate);

        }

        

        //写数组

        private void _writeFile(SystemUInt16[] values)

        {

            foreach (SystemUInt16 v in values)

            {

                byte[] b = SystemBitConverterGetBytes(v);

                _wirterWrite(b, 0, bLength);

            }

        }

       

        //写文件头

        public void BeginWrite()

        {

            _writeFile(new SystemUInt16[] { 0x809, 8, 0, 0x10, 0, 0 });

        }

       //文件尾

        public void EndWrite()

        {

            _writeFile(new SystemUInt16[] { 0xa, 0 });

            _wirterClose();

        }

       //写数字到单元格

        public void WriteNumber(SystemUInt16 x, SystemUInt16 y, double value)

        {

            _writeFile(new SystemUInt16[] { 0x203, 14, x, y, 0 });

            byte[] b = SystemBitConverterGetBytes(value);

            _wirterWrite(b, 0, bLength);

        }

       //写字符到单元格

        public void WriteString(SystemUInt16 x, SystemUInt16 y, string value)

        {

            byte[] b = SystemTextEncodingDefaultGetBytes(value);

            _writeFile(new SystemUInt16[] { 0x204, (SystemUInt16)(bLength + 8), x, y, 0, (SystemUInt16)bLength });

            _wirterWrite(b, 0, bLength);

        }

    }

};

1、manger

studion连接到数据库实例,

打开"对象

资源管理器

",

没有看到的话,

按F8

2、展开”管理“--“维护计划”,右键"维护计划"--“新建维护计划”--输入维护计划名称--这样会出现创建维护计划的窗口,然后

在左边的工具箱中(没有的话,

按Ctrl+Alt+X),

将"备份数据库任务"拖到中间的**区域,双击拖出来的这个任务(或者右键“属性”),

会出现设计属性的窗口;

3、在数据库中,

选择你要备份的数据库,然后设置备份到那里,

并且设置备份的文件名;如果要备份多个数据库,可以为每个

数据库备份

创建目录、名称;

5、单击"计划"后面的""按钮,

设置执行的时间计划

最后保存就可以了

注意事项:

1、必须把sql

agent服务设置为自动启动;

2、同时注意启动定时备份任务;

3、如果要删除某段时间的备份,在左边的工具箱中(没有的话,

按Ctrl+Alt+X),

将"删除定时备份任务"拖到中间的**区域,双击拖出来的这个任务(或者右键“属性”),

会出现设计属性的窗口,进行相应的设置即可。

1、首先运行SQL。

2、将数据库进行连接。

3、单击“服务器对象",在“服务器对象”中右键单击“备份设备”,选择”新建备份设备”。

4、在设备名称文本框输入你要创建的设备名称,然后单击“确定”。

5、这样备份设备的创建就完成了。

6、右键单击要备份的数据库,选择“任务”,在“任务”中选择“备份”。

7、单击“添加”,选中“备份设备”,单击“确定”。

8、删除文件目标,只保留备份设备,单击“确定”。

9、提示“备份已成功完成”。

10、这样就可以完成数据库的备份了。

扩展资料:

还执行语句,使用SQL最简单备份,还原数据库:

1、备份:backup database Test to disk='D:/Testbak'

2、还原:restore database Test from disk='D:/Testbak'

1、完全备份

这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一周做一次完全备份。

2、事务日志备份

事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志。

3、差异备份

也叫增量备份。它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映象。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份。

4、文件备份

数据库可以由硬盘上的许多文件构成。如果这个数据库非常大,并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库的一部分。由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用。

数据库备份重要性

尤其在一些对数据可靠性要求很高的行业如银行、证券、电信等,如果发生意外停机或数据丢失其损失会十分惨重。为此数据库管理员应针对具体的业务要求制定详细的数据库备份与灾难恢复策略,并通过模拟故障对每种可能的情况进行严格测试,只有这样才能保证数据的高可用性。

数据库的备份是一个长期的过程,而恢复只在发生事故后进行,恢复可以看作是备份的逆过程,恢复的程度的好坏很大程度上依赖于备份的情况。此外,数据库管理员在恢复时采取的步骤正确与否也直接影响最终的恢复结果。

以上就是关于如何将一个包含多个数据库备份的bak文件还原到数据库中全部的内容,包括:如何将一个包含多个数据库备份的bak文件还原到数据库中、mysql备份方式有哪些、数据库怎么建立备份库一个数据库最多可以建几个备份库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9694466.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存