Sql 使用脚本从数据库还原数据库

Sql 使用脚本从数据库还原数据库,sql,sql-server-2005,Sql,Sql Server 2005,我正在寻找一个简单的脚本,我可以用另一个数据库覆盖一个数据库。我们有一个带有主模式和数据的主数据库,开发人员经常想用主数据库的完全覆盖来摆脱混乱的数据库。目前,我使用SQL Server Studio和GUI控件实现了这一点,但我希望类似于从备份文件恢复时使用的方法(只是没有备份文件步骤): 从另一个数据库而不是备份文件获取数据库的语法是什么?我每天都使用此脚本将生产备份恢复到测试数据库 生产数据库和测试数据库的名称是相同的,假设它的名称是MyDb 删除测试数据库 运行脚本 如果要从生成的脚本

我正在寻找一个简单的脚本,我可以用另一个数据库覆盖一个数据库。我们有一个带有主模式和数据的主数据库,开发人员经常想用主数据库的完全覆盖来摆脱混乱的数据库。目前,我使用SQL Server Studio和GUI控件实现了这一点,但我希望类似于从备份文件恢复时使用的方法(只是没有备份文件步骤):


从另一个数据库而不是备份文件获取数据库的语法是什么?

我每天都使用此脚本将生产备份恢复到测试数据库

  • 生产数据库和测试数据库的名称是相同的,假设它的名称是MyDb

  • 删除测试数据库

  • 运行脚本



  • 如果要从生成的脚本文件还原数据库,可以使用windows命令行

    打开CDM并运行以下命令(database=NorthWind,脚本文件C:\MyScript.sql)


    在server studio中,在顶部的每个面板上都有一个“脚本”按钮,该按钮将向您显示它在新窗口中执行的sql。这只是一个建议,但对于这样一个问题,DBA经常访问的www.serverfault.com更有可能帮助您更好地了解Hanks@remi bourgarel,我不知道为什么我以前从未使用过那个小按钮。按照IDE生成的脚本,SQL Server似乎只是备份到一个备份文件,然后将该文件恢复到被覆盖的数据库中。好吧,我会。。。
    RESTORE DATABASE [SlaveDB]
    FROM  DISK = N'E:\Backup\MasterDB.bak'
    WITH  FILE = 1,  
    MOVE N'SlaveDB_Data' TO N'E:\Data\SlaveDB_Data.mdf',
    MOVE N'SlaveDB_Log' TO N'E:\Log\SlaveDB_Log.ldf',
    NOUNLOAD,  
    STATS = 10
    GO
    
    RESTORE FILELISTONLY 
    FROM DISK   = 'E:\WorkCopy\BackUp.bak'
    
    RESTORE DATABASE [MyDb]
    FROM DISK   = 'E:\WorkCopy\BackUp.bak'
    WITH 
    MOVE  'MyDbPrimary' TO 'D:\data\MyDb\WorkCopy.mdf',
    MOVE 'MyDbImp' TO 'D:\data\MyDb\WorkCopy_1.ndf',
    MOVE 'MyDbCut' TO 'D:\data\MyDb\WorkCopy_2.ndf',
    MOVE 'MyDbIX' TO 'D:\data\MyDb\WorkCopy_3.ndf',
    MOVE 'MyDbAUD' TO 'D:\data\MyDb\WorkCopy_4.ndf',
    MOVE 'MyDbLog' TO 'D:\data\MyDb\WorkCopy_5.ldf',
    move 'sysft_FTIndexCatalog' TO 'D:\data\MyDb\FTIndexCatalog'
    
    
    ALTER DATABASE MyDb
    Set RECOVERY  SIMPLE 
    
    sqlcmd -S localhost -d NorthWind -i "C:\MyScript.sql"