停止SQL存储过程执行两次

停止SQL存储过程执行两次,sql,asp.net-mvc,stored-procedures,model-view-controller,Sql,Asp.net Mvc,Stored Procedures,Model View Controller,我对仅从一个调用执行两次的存储过程有一个问题。我这样称呼它: using (SqlConnection conn = new SqlConnection(DatabaseConnection(read_intent: false))) { SqlCommand cmd = new SqlCommand("prc.name", conn); cmd.Parameters.AddWithValue("@test", ob

我对仅从一个调用执行两次的存储过程有一个问题。我这样称呼它:

        using (SqlConnection conn = new SqlConnection(DatabaseConnection(read_intent: false)))
        {
            SqlCommand cmd = new SqlCommand("prc.name", conn);
            cmd.Parameters.AddWithValue("@test", object.test);
            cmd.CommandType = CommandType.StoredProcedure;
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
和我的存储过程:

ALTER procedure [prc.name]
@test int,
as
begin try
set nocount on
    update tbl.name set 
        value_count = (value_count + 1),
        _test = @test
end try

问题是当我检查值_count时,它并没有增加1,而是增加了2,因为调用了一次过程。我在执行过程后抛出异常写入,以确保我不会从其他地方调用它。这方面的帮助,因为我从头到尾查看了整个过程20次,对于这个问题我没有任何线索。

是否有可能另一个应用程序正在调用相同的存储过程?仅供参考,您不需要在此处的连接上显式调用
Close
使用
会为您解决这一问题。您的过程/表名中是否实际包含
s?这是你的实际程序吗?@James不可能从其他地方调用,我会搜索所有可能的调用。我同意结束,但这不是重点,这只是一次尝试precaution@VladimirAbazarov我的意思是从另一个应用程序,而不是在你的应用程序。如果您的应用程序肯定没有两次调用它,那么很明显,它是在外部调用的,或者是SP本身的问题(看起来没问题)。另外,这是一种不必要的预防措施,因为
使用
几乎可以保证清除连接。我怀疑存储过程只被调用一次,但“复杂逻辑”实际上做的比您想象的要多(从而产生意外的结果)您当前将其描述为被调用两次的存储过程)