【问题标题】:Creating multiple stored procs in C# code在 C# 代码中创建多个存储过程
【发布时间】:2017-02-27 06:01:51
【问题描述】:

我正在尝试在 C# 中执行一个脚本,该脚本将在 SQL 2008 数据库中创建多个存储过程。

我尝试将它们全部放在一个文件中,但是当我尝试使用时出错了

Incorrect syntax 'create procedure' must be the only statement in the batch.

如果我将GO 放在创建过程之后如果失败并在单词GO 上出现语法错误。

C# 代码如下所示;

using (SqlConnection con = new SqlConnection(conString))
                {
                    con.Open();

                    foreach(string scriptFile in scriptFiles)
                    {
                        var command = con.CreateCommand();
                        command.CommandText = scriptFile;
                        int a = command.ExecuteNonQuery();
                        command.Dispose();
                        if (a == -1) successFlag = true;
                    }

                    con.Close();
                    con.Dispose();
                }

所以我本质上在同一个 txt 文件中有一堆 Create Procedure 调用,我想在数据库上执行这些调用来创建所有存储的过程。

    Create PROCEDURE [dbo].[msp_AddBulkNewEmployeeUploadDetails]      
    snip
    CREATE PROCEDURE [dbo].[msp_AddNewEmployeeDetails]
    snip

有没有办法在单个文件中而不是在多个文件中执行此操作?

【问题讨论】:

    标签: c# sql


    【解决方案1】:

    您需要用GO 分隔每个过程定义,解析GO(并删除它)并单独运行每个过程。

    另一种方法是使用现成的工具,例如DBUp

    无论您已经使用什么来创建您的 scriptFiles 集合,只需要进行 GO 解析即可。

    每个存储过程有 1 个文件有一个好处:它使版本控制(和版本比较)更容易。

    【讨论】:

    • 对,所以你是说我需要在“GO”上拆分文件并单独解析每个部分,对吗?
    猜你喜欢
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多