如何在SQL Server中自动恢复db的过程?

时间:2016-07-26 18:46:34

标签: sql-server sql-server-2008

在SQL Server中,用户必须按照以下步骤从备份文件中恢复数据库。

  1. 右键单击object explorer中的Databases容器。

  2. 从上下文菜单中选择恢复数据库。

  3. 将“数据库”指定为新数据库或现有数据库。

  4. 从设备指定要恢复的源。

  5. 选择将媒体备份为文件。

  6. 点击“添加”按钮,然后浏览到BAK文件的位置。

  7. 如果不执行上述方法,是否有任何脚本/命令可以恢复它?

2 个答案:

答案 0 :(得分:2)

在您单击SSMS备份/还原向导上的最后一个确定按钮之前...您可以单击脚本下拉按钮并选择脚本到新查询窗口(脚本下拉列表位于“帮助”按钮旁边的上方源/数据库名称),它将生成SSMS将对DB执行的Exact命令。因此,您可以使用Query窗口中的该命令在TSQL中以编程方式执行相同的操作。事实上,如果你想要一直执行相同的命令,你甚至可以把它放在一个存储的程序中:

CREATE PROCEDURE dbo.dbBackup AS
BEGIN

   RESTORE DATABASE [MyDataBaseName] FROM  DISK = N'C:\SQLData\MyDB.bak' 
   WITH  FILE = 1,  NOUNLOAD,  STATS = 5

END

再多花一个级别,您可以将该SP分配给热键,如下所述:https://www.mssqltips.com/sqlservertip/1287/assign-shortcuts-to-commands-in-sql-server-management-studio/

要访问下面的屏幕,请打开查询窗口,然后从菜单中选择工具 - >选项然后在Environment节点下选择Keyboard - >查询快捷方式,这将允许您为最适合您的热键组合分配存储过程。

要注意的一件事是确保这不会取代现有的数据库,因为如果恢复命令包含该选项,您可能会意外覆盖一个好的数据库

答案 1 :(得分:1)

"自动化"在您的问题中是一个非常宽泛的术语,但如果C#是一个选项,您可以使用SQLCommand Class执行还原,如下所示

sqlCmd.CommandText = "RESTORE DATABASE [" + restoreDbName + "] FROM DISK = 
    N'" + backupFileName + "' WITH FILE = 1, MOVE '" + logicalNameMdf + "' TO '" 
    + restorePathMdf + "', MOVE '" + logicalNameLdf + "' TO '" + restorePathLdf + "', " 
    +  " NOUNLOAD,  REPLACE";

sqlCmd.ExecuteNonQuery();