Creación de una función CLR definida por el usuario en .Net

Quiero crear una función CLR, creé un archivo de biblioteca de clases normal y lo codifiqué como se muestra a continuación, no quiero usar SqlServerProject, ya que no puedo encontrar algunas clases allí.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Types;

    namespace ClassLibrary1
    {
        public partial class Class1
        {
            [Microsoft.SqlServer.Server.SqlFunction]
            public static SqlString GetPassword(SqlString Value)
            {
                return Value;
            }
        }
    }

compilé el código y creé el ensamblaje de sqlserver como este

CREATE ASSEMBLY ASSEM
authorization dbo
FROM 'E:\NBM Sites\tvt.stage.asentechdev1.com\ClassLibrary1.dll' WITH PERMISSION_SET = SAFE;

y creó una función como se muestra a continuación

CREATE FUNCTION SampleFunc
(   
    @value nvarchar(max)
)
RETURNS nvarchar(max) with execute as caller
AS
    External Name ASSEM.Class1.GetPassword
GO

pero la función de creación anterior arrojó un mensaje de error.

Could not find Type 'Class1' in assembly 'ClassLibrary1'.

No entiendo por qué no se reconoce la clase 1, ya que también lo he hecho público. Por favor, que alguien me ayude.

preguntado el 08 de noviembre de 11 a las 18:11

1 Respuestas

Falta el espacio de nombres en el que se encuentra su clase (ClassLibrary1). Entonces, la declaración de función de creación correcta es:

CREATE FUNCTION SampleFunc
(   
  @value nvarchar(max)
)
RETURNS nvarchar(max) with execute as caller
AS
  External Name [ASSEM].[ClassLibrary1.Class1].[GetPassword]
GO

respondido 08 nov., 11:23

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.