Sql server SQL Server 2017 CLR错误:在程序集中找不到类型

Sql server SQL Server 2017 CLR错误:在程序集中找不到类型,sql-server,sqlclr,Sql Server,Sqlclr,我正在SQL Server 2017中创建一个CLR存储过程。在以前的版本中,我已经多次这样做,没有任何问题;但是,我们最近更新了SQL Server 2017 我知道此次升级带来的安全问题,但我想确保在开始处理安全问题之前能够部署CLR。我创建了一个名为Test的数据库,并将trustry设置为ON(我知道是坏的——临时的)。我不断得到以下错误: 在程序集“Get_API_Data”中找不到类型“CLR_Get_API_Data.StoredProcedures” 我找到了几篇文章,例如:,它

我正在SQL Server 2017中创建一个CLR存储过程。在以前的版本中,我已经多次这样做,没有任何问题;但是,我们最近更新了SQL Server 2017

我知道此次升级带来的安全问题,但我想确保在开始处理安全问题之前能够部署CLR。我创建了一个名为
Test
的数据库,并将
trustry
设置为ON(我知道是坏的——临时的)。我不断得到以下错误:

在程序集“Get_API_Data”中找不到类型“CLR_Get_API_Data.StoredProcedures”

我找到了几篇文章,例如:,它们处理了这个错误,但是它们在类中构建代码,而不是在类型为
storedProcedures
的部分类中

这是我创建存储过程的SQL脚本:

USE Test 
GO

--Alter Database Test
--Set Trustworthy on

--EXEC sp_configure 'clr strict security', 1;
--RECONFIGURE;

IF EXISTS (SELECT * FROM sys.assemblies asms 
           WHERE asms.name = N'Get_API_Data' AND is_user_defined = 1)
    DROP ASSEMBLY [Get_API_Data]
GO

CREATE ASSEMBLY Get_API_Data
FROM 'C:\Users\Administrator\Documents\Visual Studio 2015\Projects\CLR_Assemblies\Get_API_Data\Get_API_Data\bin\Debug\Get_API_Data.dll'
WITH Permission_Set = Safe --EXTERNAL_ACCESS 
GO

--Assembly Name,[SolutionName.StoredProcedures].Sub Name
CREATE PROCEDURE [dbo].[GetAPI]
AS EXTERNAL NAME Get_API_Data.[CLR_Get_AMS_API_Data.StoredProcedures].GetAPI
GO
我的解决方案名称是
CLR\u Get\u API\u Data
,我的项目名称是
Get\u API\u Data
,我的方法名称是
GetAPI
。以下是我的Visual Studio代码:

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

public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void GetAPI ()
    {
         // Stuff happens here
    }    //Ends Public Void Get
}    //Ends Class

使用分部类没有错

[CLR\u Get\u AMS\u API\u Data.StoredProcedures]
CLR\u Get\u AMS\u API\u数据部分引用了命名空间名称。您的代码没有显示您正在使用命名空间。删除
CLR\u Get\u AMS\u API\u数据。
这样您就可以:

作为外部名称获取\u API\u数据。[StoredProcess].GetAPI

有关在SQL Server 2017及更新版本中正确/安全部署SQLCLR项目的更多信息,请参阅我的帖子:

  • -步骤比第3部分,解决方案2(下文)多,但非常适合现有项目,因为它几乎不需要更改现有解决方案,甚至不需要更改部署过程(事实上,这就是我在项目中所走的路线,因为它所做的只是在安装脚本的开头添加3个简单步骤)

  • 有关一般使用SQLCLR的更多信息,请访问:

    使用分部类没有错

    [CLR\u Get\u AMS\u API\u Data.StoredProcedures]
    CLR\u Get\u AMS\u API\u数据部分引用了命名空间名称。您的代码没有显示您正在使用命名空间。删除
    CLR\u Get\u AMS\u API\u数据。
    这样您就可以:

    作为外部名称获取\u API\u数据。[StoredProcess].GetAPI
    

    有关在SQL Server 2017及更新版本中正确/安全部署SQLCLR项目的更多信息,请参阅我的帖子:

  • -步骤比第3部分,解决方案2(下文)多,但非常适合现有项目,因为它几乎不需要更改现有解决方案,甚至不需要更改部署过程(事实上,这就是我在项目中所走的路线,因为它所做的只是在安装脚本的开头添加3个简单步骤)
  • 有关一般使用SQLCLR的更多信息,请访问: