SQL + .NET“无法找到存储过程”,程序启动后SP将被删除

时间:2012-02-01 08:37:11

标签: .net sql stored-procedures windows-services

我遇到以下问题:

我写了一个win服务程序,将数据从一个源(OPC)传输到SQL数据库。 在数据库中,我创建了3个存储过程(所有数据将在3个表中分开)。

开始服务后,一个SP将丢失 - 以某种方式删除,然后我得到“无法找到存储过程”。

如果我在服务运行期间创建此SP - 一切正常,但重启后会再次删除。

SP的所有3个电话都是相同的:

using (SqlConnection myConnection = new SqlConnection(SQL_CONNSTRING))
        {
            myConnection.Open();
            SqlCommand myCommand = new SqlCommand("dbo.SP_name", myConnection);
            myCommand.CommandType = CommandType.StoredProcedure;
            myCommand.Parameters.Add("@Line", SqlDbType.Int, 1).Value = line;
            object idr = myCommand.ExecuteScalar();
            myConnection.Close();
        }

SP删除大约发生在ExecuteScalar()

有人可以解释我为什么会这样,我该如何避免呢?

我已经搜索了一些关于它的信息,但搜索“无法找到SP”只会让我看到SP是presenrt的情况。我的遗嘱将被删除,并且没有找到。

upd:描述的类似情况,没有解决方案:http://www.sql-questions.com/microsoft/SQL-Server-Reporting-Services/31612416/stored-procedure-getting-deleted.aspx

UPD2:已解决

我的错 - SP已从另一个SP中删除。

Trace帮助我找到它发生的那一刻[感谢破折号 - 阅读问题下面的评论],以及它发生的SP。

不知何故,第二个SP包含了用于创建我需要的SP的第一行脚本。

因为第二个SP很少被调用,但肯定会在开始时调用一次 - 娱乐后一切似乎都可以。

抱歉这个愚蠢的问题,感谢所有试图帮助我的人! :)

1 个答案:

答案 0 :(得分:0)

  • 或您的用户无权运行SP
  • 或者它是SP代码的预期行为 - 可能它会自行删除(如果可能的话)
  • sp _ 前缀会让您的服务器查找 master db中的过程,然后您会遇到一些干扰