Я создаю хранимую процедуру CLR в SQL Server 2017. Я делал это много раз в предыдущих версиях без каких-либо проблем;тем не менее, мы недавно обновились до SQL Server 2017.
Я знаю о проблемах безопасности, связанных с этим обновлением, но я хотел убедиться, что смогу развернуть свой CLR до того, как начну возиться с безопасностью. Я создал базу данных с именем Test
и установил Trustworthy
на ON (плохо, я знаю - временно). Я продолжаю получать следующую ошибку:
Не удалось найти тип 'CLR_Get_API_Data.StoredProcedures' в сборке 'Get_API_Data'.
Я нашел несколько статей, например: SQLСервер: Не удалось найти тип в сборке , которая имела дело с этой ошибкой, но они создали свой код в классе, а не в частичном классе типа 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_Get_API_Data
, имя моего проекта Get_API_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