首页 新闻 赞助 找找看

在sqlserver2008r2中添加clr托管代码报出找不到类型的错误,求解

0
[已解决问题] 解决于 2014-10-18 12:01

这是C#代码:

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

namespace SqlServerAssCodeConsoleApp
{
    public class ClrTestPro
    {
        [SqlProcedure]
        public static void PipInfo(string info)
        {
            SqlPipe pip = SqlContext.Pipe;
            pip.Send("c# code sended msg!");
        }
    }
}

使用的是.net framework 3.5

----

这是sql代码:

sp_configure enable, 1;
reconfigure--开启clr集成功能
create assembly testAss
from 'E:\Test.dll'
with permission_set = safe
go
--到这里是成功的
create procedure cp_test
@info nvarchar(200)
as external NAME testAss.ClrTestPro.PipInfo

数据库报出错误:

消息 6505,级别 16,状态 2,过程 cp_test,第 1 行
在程序集 'Test' 中找不到类型 'ClrTestPro'。
===================================

这是怎么回事,求解

北在北方的主页 北在北方 | 初学一级 | 园豆:182
提问于:2014-10-18 11:32
< >
分享
最佳答案
0

我虽然不懂英文,你也不能这么骗我吧,

1+2+3+4不是应该是

testAss.SqlServerAssCodeConsoleApp.ClrTestPro.PipInfo

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-10-18 11:38

不行啊,第三个点哪里报语法错误。

北在北方 | 园豆:182 (初学一级) | 2014-10-18 11:48

@北在北方: 那是另外一个问题了。你先看下test.dll里面的类全名吧,

看是

testAss.SqlServerAssCodeConsoleApp.ClrTestPro.PipInfo

还是

test.SqlServerAssCodeConsoleApp.ClrTestPro.PipInfo

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-18 11:52

@爱编程的大叔: 第一个点前面必须是在数据库中注册的程序集的名字,也就是说必须是testAss.

语法上是这样Create Procedure <Procedure Name>

AS External Name <Assembly Identifier>.<Type Name>.<Method Name>

没说类的命名空间怎么写。

北在北方 | 园豆:182 (初学一级) | 2014-10-18 11:58

@爱编程的大叔: 明白怎么回事了,中间的TypeName确实是命名空间+类名,只是需要用方括号括起来,应该是这样:testAss.[SqlServerAssCodeConsoleApp.ClrTestPro].PipInfo

北在北方 | 园豆:182 (初学一级) | 2014-10-18 12:01

@北在北方: 多看看书吧,我也不懂你看的是哪家的。

How to: Create and Run a CLR SQL Server Stored Procedure

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-18 12:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册