【发布时间】:2013-09-12 04:38:26
【问题描述】:
我正在考虑使用 Powershell 脚本在我的 SQL Server 2008 实例上自动执行还原过程,我发现有两种不同的方法:
- 使用 invoke-sqlcmd cmdlet
- 加载 Microsoft.SqlServer.Management.Smo.Restore 并使用其中的重点恢复方法
我已通读 TechNet 文档,但我认为我的问题可能过于基础,无法在其中涵盖。使用如下所示的简单代码,并且将是静态的(可能会迭代备份的名称以与其拍摄日期一致):
RESTORE DATABASE Loadtest
FROM DISK = 'D:\databases\LoadTest_09_09_2013.bak'
WITH REPLACE
GO
我为什么要使用除了简单的invoke-sqlcmd 之外的任何东西?使用直接还原类,脚本似乎最终会变得更加复杂。使用还原是否会获得任何形式的性能提升?
请注意,我确实在此工作站上安装了 SQL Management Studio,完整的 powershell 脚本最终将进行一些其他测试环境维护(清除缓存等)。
【问题讨论】:
-
我喜欢使用 SMO 而不是 invoke-sqlcmd 的原因之一是 SMO 中的 KillAllProcesses() 方法。有了它,我什至不必检查是否有与数据库的连接正在恢复。但由于这只是我的原因,我不会做这个答案。我很想看看别人怎么说。
-
这是一件有趣的事情。我可能最终会走同样的路,尽管你可以在 SQL 查询中使用花哨的“Kill”版本做同样的事情。
标签: sql powershell