2017-05-25 95 views
1

我有一个SQL脚本,当我逐行执行时,它的工作方式与我想要的完全一样。起初,这是一个可行的选择,但随着时间的推移,脚本变得越来越大,现在逐渐消失。使用多种语句类型自动执行SQL脚本

我试图运行该脚本作为Visual Studio中的SSIS包的一部分,但这给了我奇怪的结果。

我有一种感觉,这是因为我在脚本中混合了语言(即多个UPDATE,ALTER,SELECT INTO,语句)... 有没有一种方法来自动执行此脚本,使其逐行运行如果我正在通过它?

善良。谢谢你!

+1

在移动到下一个块之前,您需要提交DDL更改。我认为SQL Server使用GO。 https://stackoverflow.com/questions/1432757/sql-server-script-alter-procedure-executing-multiple-alter-procedure-into-one可能会有所帮助。 GO执行最后一个“GO”中的所有语句,因此如果您要更改DDL,则可以在下一系列事务之前进行更新,以使更改生效。 – xQbert

+0

这是为了调试目的吗?为什么不将脚本分成多个包/多个存储过程? – Alexei

+0

@Alexei理想情况下,我想部署此自动运行。当我转移到Visual Studio时,我试图将脚本分成多个包,但由于我写了脚本的线性方式,它没有给我预期的结果。 – hansolo

回答

2

一般来说。所有你需要的是每个语句之后的分号,这与语句类型无关。只有当你想把它分成批时才需要“Go”(尽管如果你将代码传递给别的东西,例如ADO.NET命令对象,它可能不起作用)。如果您希望代码在“go”之前继续运行而不管代码是成功还是失败,这都会很有帮助。如果您希望代码的继续依赖于以前的代码,请确保以“;”结束每个语句。

+0

谢谢你。规模上坏习惯如何成为问题的一个很好的例子。任何想法为什么它需要这么长的时间?它没有花2个小时手动完成脚本... – hansolo

+0

仍然没有运气。部分脚本可以成功运行,但是一些UPDATE语句永远不会发生,导致列中没有数据。 – hansolo

+0

您是否尝试将每个语句的SQL脚本任务设置为SSIS作业?或者你可以在数据流任务中设置它?这些可能会让您更深入地了解您遇到问题的位置。尝试运行后,查看输出并查找任何错误或警告消息。 –