【发布时间】:2012-04-17 17:06:20
【问题描述】:
我正在编写一个 Powershell 脚本,它对本地 SQL Server 数据库执行多项操作。
我正在做的一件事是一个接一个地运行多个 SQL 作业。我这样运行它们:
sqlcmd -S .\ -Q "EXECUTE msdb.dbo.sp_start_job @job_name = 'Rebuild Content Asset Relationship Data'"
有没有办法让 Powershell 延迟运行下一个作业,直到第一个作业完成?
谢谢
【问题讨论】:
-
你的意思是延迟几秒?还是
sqlcmd不等到存储过程完成才退出? -
迈克:它不等待。一旦你执行命令,它会在 0.001 秒后返回:
Job 'Rebuild Content Asset Relationship Data' started successfully. -
所以您的查询在技术上完成了,它只是在 SQL Server 中启动了一些后台进程。问题是 Powershell 究竟如何知道某个 SQL Server 进程何时完成?也许您可以每 x 秒轮询一次以检查它是否已完成?
-
没错。它开始并最终完成。我如何以及每隔几秒轮询一次什么?这是最好的方法吗?我可以在 SQLcmd 中添加一个标志吗?
-
一个快速的谷歌出现了这个:interworks.com/blogs/bbickell/2010/01/15/… - 也许将整个事情包装在一个启动工作的存储过程中,然后循环直到工作完成。然后从 Powershell 调用它..
标签: sql-server powershell