2011-09-07 3 views
0

Je suis très nouveau sur .net et toutes les technologies de développement Microsoft. Je travaille sur un projet CLR. Je veux juste stocker une chaîne et c'est hash dans la base de données (MS SQL Server). J'ai créé une procédure stockée dans VS 2010. Lorsque j'exécute le script SQL de test, il est indiqué "Impossible de trouver la procédure stockée". code est le suivant: procédure stockée.net Projet CLR dit "Impossible de trouver la procédure stockée"

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 

ERREUR: Impossible de trouver la procédure stockée 'dbo.CDA_hashSProc'.

Aidez-nous s'il vous plaît.

Merci beaucoup

Varun

+0

Harry ce n'est pas clair à partir de votre code, qu'est-ce que vous exécutez et ce qui se plaint que dbo.CDA_hashSProc ne pas existe? votre stocké: [dbo]. [CDA_HashTest] n'appelle pas dbo.CDA_hashSProc pour ce que je peux voir, de toute façon avez-vous enregistré l'assembly et le dbo.CDA_hashSProc stocké avec les commandes spécifiques comme CREATE ASSEMBLY etc? pouvez-vous nous montrer ces commandes aussi? –

+0

en guise de note, faites-vous plaisir et arrêtez d'utiliser ADO.NET directement (Créer une nouvelle SqlConnection, SqlCommand, etc), vous fuyez les ressources et les connexions un peu partout, c'est une bibliothèque que vous pourriez implémenter assez rapidement sans trop changer votre code http://abstractsql.codeplex.com tout en vous débarrassant de tous ces problèmes – BlackTigerX

+0

Etes-vous sûr que DBO est le propriétaire? –

Répondre

0

Généralement, cette erreur est causée par une faute de frappe dans le nom de la procédure stockée. L'erreur: Impossible de trouver la procédure stockée 'dbo.CDA_hashSProc'. Je vous soupçonne avoir fait wrtten ce votre ligne en dessous où vous ouvrez votre connexion comme:

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