C# 存储过程删除查询不起作用。但在编辑器中单独运行而未调用时,它会正常工作

C# 存储过程删除查询不起作用。但在编辑器中单独运行而未调用时,它会正常工作,c#,sql,database,sql-server-2008,c#-4.0,C#,Sql,Database,Sql Server 2008,C# 4.0,我使用SQLServerManagementStudio编写了这个存储过程 如果我在编辑器中执行它,并手动分配一个formname和一个用户ID,那么它可以正常地清理与任何内容都不匹配的设置 ALTER PROCEDURE [dbo].[Handover_DeleteBadParams] @UserID varchar(10), @formName varchar (30) as begin with deletethese as (

我使用SQLServerManagementStudio编写了这个存储过程

如果我在编辑器中执行它,并手动分配一个formname和一个用户ID,那么它可以正常地清理与任何内容都不匹配的设置

ALTER PROCEDURE [dbo].[Handover_DeleteBadParams] 
     @UserID varchar(10), 
     @formName varchar (30)
as
begin
   with deletethese as
   (     
       select 
           UserID, Param 
       from
           BI.dbo.Handover_RDL_SavedSettings userSettings
       left join
           BI.dbo.Handover_UI form on Form.FormName = userSettings.FormName 
                                   and userSettings.Param = Form.ItemValue
       where 
          userSettings.FormName = @UserID
          and userSettings.UserID = @formName
          and Form.FormName IS NULL)
   Delete from S
   from bi.dbo.Handover_RDL_SavedSettings S
   join deletethese D on S.UserId = D.UserID and S.Param = D.Param;
end
然后我使用C#调用存储过程


我在执行过程中没有收到任何错误或任何形式的反馈。。。。我在这里做错了什么?

由于它执行时没有任何错误,但没有删除任何内容,因此我们必须断定您的
用户ID
和/或
工作表单名称
不包含您认为它们包含的值


在调用之前,在C#中设置一个断点,并检查值以验证这是否是问题所在。

我注意到的一个问题是,存储过程中的参数似乎颠倒了:

 where userSettings.FormName = @UserID
 and userSettings.UserID = @formName
应该是

 where userSettings.FormName =  @formName
 and userSettings.UserID = @UserID

您是否可以运行sql profiler并确保它在两种情况下都以预期的参数运行,即数据库用户相同?如果不是,可能是权限问题。我要检查的第一件事是SqlConnection对象。我认为这是SqlCommand构造函数中的
cc
,对吗?在那里放置一个断点,查看
cc
,并验证它是否连接到SQL实例和它应该连接的数据库。当我们运行跟踪时,数据库管理员会发疯。用户在每种情况下都是不同的。我用同样的方法在代码中使用CC其他位置。。如果那里发生了什么事,我希望会有例外。谢谢你的评论和帮助我不知道我是怎么错过的。谢谢现在似乎工作正常。我在花时间重新发明轮子。有时候只是需要别人看看,看看你错过了什么。非常感谢您的帮助。设置一个消息框,它们确实包含了所需的内容,但用于错误的字段。好建议。
 where userSettings.FormName =  @formName
 and userSettings.UserID = @UserID