.net CLR项目表示“找不到存储过程”

.net CLR项目表示“找不到存储过程”,.net,stored-procedures,clr,.net,Stored Procedures,Clr,我对.net和所有微软开发人员技术都很陌生。我正在做一个CLR项目。我只想在数据库MS SQL Server中存储一个字符串及其哈希值。我在VS2010中创建了一个存储过程。当我运行测试SQL脚本时,它说找不到存储过程。 代码如下: 存储过程 using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; pu

我对.net和所有微软开发人员技术都很陌生。我正在做一个CLR项目。我只想在数据库MS SQL Server中存储一个字符串及其哈希值。我在VS2010中创建了一个存储过程。当我运行测试SQL脚本时,它说找不到存储过程。 代码如下: 存储过程

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;


public partial class StoredProcedures
 {
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void CDA_hashSProc()
    {
        using (SqlConnection connection = new SqlConnection("context connection=true"))
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand("CDA_HashTest", connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@data", SqlDbType.VarChar, 4000);
            cmd.Parameters["@data"].Value = "Hello";
            cmd.Parameters.Add("@hashdata", SqlDbType.VarChar, 4000);
            Security.Hash hash = new Security.Hash();
            cmd.Parameters["@hashdata"].Value = (SqlString)hash.shaHash("Hello World");
            SqlDataReader dr = cmd.ExecuteReader();
            dr.Close();
       }
    }

};

USE [NWebED]
GO
/****** Object:  StoredProcedure [dbo].[CDA_HashTest]    Script Date: 09/07/2011 11:36:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[CDA_HashTest] 
    -- Add the parameters for the stored procedure here
    @data varchar(max),
    @hashdata varchar(max)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    -- Insert statements for procedure here
    insert into CDA_Encryption_Test (CDA_Document, CDA_Hash) values (@data, @hashdata)  
END
错误: 找不到存储过程“dbo.CDA\u hashSProc”

请帮忙

非常感谢


Varun

通常,此错误是由存储过程名称中的键入错误引起的。错误:找不到存储过程“dbo.CDA\u hashSProc”。我怀疑你在你打开连接的下面写了这句话:

 SqlCommand cmd = new SqlCommand("CDA_hashSProc", connection); 

您需要在SQL中注册程序集,使其在那里可用

看这里

特别是在这里

Harry从您的代码中不清楚您执行了什么,以及为什么dbo.CDA_hashSProc不存在?您存储的:[dbo].[CDA_HashTest]没有调用dbo.CDA_hashSProc,我可以看到,无论如何,您是否使用诸如CREATE assembly等特定命令注册了程序集和存储的dbo.CDA_hashSProc?你能给我们看一下这些命令吗?顺便说一句,帮你自己一个忙,停止使用ADO.NET直接创建新的SqlConnection、SqlCommand等,你正在到处泄漏资源和连接,这是一个可以很快实现的库,无需对代码进行太多更改,同时可以解决所有这些问题。您确定DBO是所有者吗?