在SQL Server中,用户必须按照以下步骤从备份文件中恢复数据库。
右键单击object explorer中的Databases容器。
从上下文菜单中选择恢复数据库。
将“数据库”指定为新数据库或现有数据库。
从设备指定要恢复的源。
选择将媒体备份为文件。
点击“添加”按钮,然后浏览到BAK文件的位置。
如果不执行上述方法,是否有任何脚本/命令可以恢复它?
答案 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();