加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用PowerShell和SMO恢复数据库时显示进度

发布时间:2020-12-12 08:44:36 所属栏目:MsSql教程 来源:网络整理
导读:我有一个用Power Shell和SMO恢复数据库的脚本.现在我知道我可以将一个事件处理程序传递给还原对象上的PercentComplete,并获得恢复进度.问题是我不知道如何创建事件处理程序并在PowerShell中传递一个函数?我可以在C# restore.PercentComplete += new PercentC
我有一个用Power Shell和SMO恢复数据库的脚本.现在我知道我可以将一个事件处理程序传递给还原对象上的PercentComplete,并获得恢复进度.问题是我不知道如何创建事件处理程序并在PowerShell中传递一个函数?我可以在C#
restore.PercentComplete += new PercentCompleteEventHandler(restore_PercentComplete);

static void restore_PercentComplete(object sender,PercentCompleteEventArgs e)
{
  System.Console.WriteLine("{0}",e.Percent);
}

任何帮助将不胜感激.

谢谢.

解决方法

经过一番深入的研究,我终于在文档中找到了.要添加事件处理程序,您需要执行以下操作:

导入有关的程序集;

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null 
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SmoExtended') | out-null
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ConnectionInfo') | out-null

现在要创建事件处理程序,你需要使用一个内联函数来声明它;

$percentEventHandler = [Microsoft.SqlServer.Management.Smo.PercentCompleteEventHandler] { Write-Host "Restored " $_.Percent "%" }
$completedEventHandler = [Microsoft.SqlServer.Management.Common.ServerMessageEventHandler] { Write-Host "Database " $databasename " Created Successfuly!" }

现在最后一步是将事件处理程序添加到正在使用的对象中.通常在C#中,您只需执行以下操作;

restore.PercentComplete += new PercentCompleteEventHandler(restore_PercentComplete);
restore.Complete += new Microsoft.SqlServer.Management.Common.ServerMessageEventHandler(restore_Complete);

这在PowerShell脚本中不起作用,您需要做的是使用生成的函数来添加事件.函数名称是EventHandlerName,其开头附加“add_”,如此;

$dbRestore.add_PercentComplete($percentEventHandler)
$dbRestore.add_Complete($completedEventHandler)

希望这有助于其他任何人试图做到这一点!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读