【问题标题】:Multiple statements in single SqlCommand单个 SqlCommand 中的多个语句
【发布时间】:2011-03-10 03:11:40
【问题描述】:

我有一组 sql 脚本,我使用 C# 中的 SqlCommand 对象将它们发送到 SQL Server。这些脚本创建存储过程,只要我创建过程,一切正常。如果我的脚本包含通常的“如果存在 ... drop XYZ; create procedure XYZ ...” 块,我会收到一个错误,告诉我,create 必须是批处理中的第一个语句。分号和“GO”都不能用作分隔符。

任何提示如何使用单个 SqlCommand 执行这​​样的脚本?我希望能够将属性设置为“批处理”或类似的东西,但我没有找到任何东西。

【问题讨论】:

    标签: c# tsql ado.net


    【解决方案1】:

    冲突的语句必须由批处理分隔符分隔(默认 GO - 你说这不起作用),或者如果可能的话,从以不同顺序执行的程序逻辑的角度来看。但是,在大多数情况下,无法重新调整语句的顺序,因此您必须诉诸在不同批次中的分离,因此我建议在不同批次中运行它们。

    【讨论】:

    • 我前段时间试过这个,基本上把字符串拆分为“GO”这个词,然后循环执行语句
    • 不是我想要的答案,但可能是正确的答案。在“GO”处拆分是我将使用的解决方案。
    【解决方案2】:

    如果你想提交一个包含批处理的大型 sql 脚本,你应该使用 SMO。这使您可以更好地控制脚本的执行方式。并且不依赖于自定义 sql 脚本粉碎逻辑(我需要解决这个问题吗?)

    http://msdn.microsoft.com/en-us/library/ms212724.aspx

    【讨论】:

      【解决方案3】:

      ;应该可以正常工作,如 http://www.java2s.com/Code/CSharp/Database-ADO.net/ExecutemultipleSQLstatementsusingaSqlCommandobject.htm

      所示

      但是您可以使用存储过程来完成这项任务,这会使事情变得更容易。

      【讨论】:

      • create procedureSELECT 等不同
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多