Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
还原多个SQL Server.bak文件_Sql_Sql Server 2008_Stored Procedures - Fatal编程技术网

还原多个SQL Server.bak文件

还原多个SQL Server.bak文件,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,我有一个包含多个sql server.bak文件的文件夹 我想将它们还原到sql server。如何执行脚本,以便可以立即恢复该文件夹中的所有备份文件 RESTORE DATABASE [db1] FROM DISK = N'C:\folder\db1.bak' WITH FILE = 1, MOVE N'DB_Data' TO N'C:\folder\db2.mdf', MOVE N'DB_log' TO N'C:\folder\db1.LDF', NOUNLOAD, STATS

我有一个包含多个sql server.bak文件的文件夹

我想将它们还原到sql server。如何执行脚本,以便可以立即恢复该文件夹中的所有备份文件

RESTORE DATABASE [db1] FROM  DISK = N'C:\folder\db1.bak' WITH  FILE = 1,  MOVE N'DB_Data' TO N'C:\folder\db2.mdf',  MOVE N'DB_log' TO N'C:\folder\db1.LDF',  NOUNLOAD,  STATS = 10
GO
RESTORE DATABASE [db2] FROM  DISK = N'C:\folder\db2.bak' WITH  FILE = 1,  MOVE N'DB_Data' TO N'C:\folder\db2.mdf',  MOVE N'DB_Log' TO N'C:\folder\db2.LDF',  NOUNLOAD,  STATS = 10
GO


试试这样的

  • 我猜数据库名称没有写入.bak文件。不知道如何通过脚本检索。您可以为还原的数据库使用文件名或任何其他临时名称,并在还原后在SSMS下重命名它
  • 请注意.bak文件可能包含差异备份。在差异备份的情况下,它不会像那样一个接一个地工作
  • 如果文件夹包含完整备份和事务日志备份,那么最好在SSMS中使用备份历史记录开始还原数据库
  • 让我们谈谈从多个BAK文件恢复多个数据库。 我想呆呆地看可能会有帮助。这不是MS方式,但可能是最快的方式

    你知道GAWK吗

    允许您使用文件名生成输入文件:

    dir *.bak > input.txt
    
    将GAWK程序写入program.GAWK.txt文件:

    BEGIN {
    printf "-- My auto-generated script \n"
    }
    {
    printf "RESTORE DATABASE [substr($1,1,length($1)-4)] FROM DISK = N'$1 \n'"
    printf "GO \n\n"
    }
    END {
    printf "-- End of script"
    }
    
    尝试使用substr为基于BAK文件名的还原数据库生成临时名称。不确定substr表达式是否正确-请检查您自己

    • $1将从input.txt更改为文件名

    • substr($1,1,长度($1)-4)用于从文件名中剪切“.BAK”

    通过以下方式生成输出脚本:

    gawk --file=program.gawk.txt input.txt > my_script.sql
    
    …并对其进行审查

    也许这样做是可能的。不知道


    从以下位置下载GAWK:

    我希望从单个服务器进行多个恢复script@KishoreJangid:这是一个脚本。。。。。但是,您不能用一个
    还原数据库命令还原多个
    *.bak
    文件…
    命令(如果这是您真正的意思…)执行脚本时,我不知道数据库名称。它应该从一个文件夹中获取所有数据库备份文件并还原它们