暂停SQL服务器脚本?

时间:2009-12-18 11:53:36

标签: sql-server

我正在尝试开发一个脚本,我将能够在SQL Server 2008 [Express]数据库上运行。该数据库包含大约10-15个表,这些表正在使用不同的值/新字段等进行更新。

但是,它不是一个完全自动化的过程,在升级过程中,暂停执行脚本,在脚本中放置一个消息框,允许用户执行<something>会很棒。单击脚本上的“确定”将继续执行并完成迁移。

这样的事情存在吗?

3 个答案:

答案 0 :(得分:2)

没有直接的方法可以让T-SQL脚本暂停并等待用户输入。 WAITFOR命令将导致执行等待指定的时间段,但不允许用户交互。

一个(非常)原始的解决方案是将进程分解为小的脚本块,并通过一个好的老式BATCH脚本来控制它们的执行。例如: -

SQLCMD -S <servername> -E -I <path_to_script_one>
PAUSE
SQLCMD -S <servername> -E -I <path_to_script_two>

显然这种方法也存在一些缺点;错误处理变得麻烦且有问题,因为没有简单的方法来确定成功或失败。虽然不同的脚本语言可能提供更多功能,但BATCH命令相对有限。

如果允许用户输入导致动态SQL语句的参数值,则存在安全问题。

如果您想要“丰富”的体验,您应该考虑使用您选择的工具构建的UI ......

答案 1 :(得分:0)

您可以暂停WAITFOR。我怀疑你实际上可以从T-SQL脚本中弹出一个消息框

答案 2 :(得分:0)

SQL Server脚本不支持任意挂起和重新启动执行。

SQL 2008 Management Studio的调试功能使您可以在一个或多个断点处暂停脚本,但是您无法保证用户正在从该环境执行脚本。

如果您需要暂停脚本一段不确定的时间以供用户执行操作,最简单的方法是将其拆分为多个脚本文件。

如果您需要将其自动化,则可以使用脚本之间的DOS PAUSE命令从.cmd文件触发它们。