暂停 SQL 服务器脚本?

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

然而,这不是一个完全自动化的过程,在升级的某些点上,暂停脚本的执行、在脚本内部弹出消息框,让用户进行<某些操作>,点击脚本上的“确定”按钮会继续执行并完成迁移,这将是极好的。

是否存在此类工具呢?

3个回答

3

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

一个(非常)简单的解决方案是将过程分成小的脚本块,并通过传统的批处理脚本控制它们的执行。例如:

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

显然,这种方法也存在一些缺点;错误处理变得繁琐且问题多多,因为没有简单的方法确定成功或失败。 BATCH命令相对受限,不过不同的脚本语言可能提供更多的功能。
如果允许用户输入参数值以产生动态SQL语句,则存在安全性问题。
如果您想要一个“丰富”的体验,应该考虑使用您选择的工具构建UI...

0

你可以使用WAITFOR暂停。我怀疑你实际上无法在T-SQL脚本中弹出消息框。


WAITFOR会暂停一段时间,或者直到特定的日期/时间。用户没有手动重新启动脚本的能力。 - Ed Harper
直到查询返回一行或超时。 - Vinko Vrsalovic

0

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

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

如果您需要暂停脚本以便用户执行操作,最简单的方法是将其拆分成多个脚本文件。

如果您需要自动化此过程,则可以使用DOS PAUSE命令在脚本之间触发它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接