Я создал класс библиотеки в C# с помощью этого кода вы можете увидеть:SQL Server не может найти свою функцию в моей DLL/сборки
namespace ManagedCodeAndSQLServer
{
public class BaseFunctionClass
{
public BaseFunctionClass()
{
}
[SqlProcedure]
public static void GetMessage(SqlString strName, out SqlString
strMessge)
{
strMessge = "Welcome," + strName + ", " + "your code is getting executed under CLR !";
}
}
}
Я построил этот проект с UNSAFE
набор разрешений собственности, Я добавил DLL в SQL Server, используя этот код:
use master;
grant external access assembly to [sa];
use SampleCLR;
CREATE ASSEMBLY ManagedCodeAndSQLServer
AUTHORIZATION dbo
FROM 'd:\ManagedCodeAndSQLServer.dll'
WITH PERMISSION_SET = UNSAFE
GO
Он добавил сборку как часть моей базы данных.
Я хочу, чтобы вызвать функцию, как вы можете увидеть:
CREATE PROCEDURE usp_UseHelloDotNetAssembly
@name nvarchar(200),
@msg nvarchar(MAX)OUTPUT
AS EXTERNAL NAME ManagedCodeAndSQLServer.[ManagedCodeAndSQLServer.
BaseFunctionClass].GetMessage
GO
Но я получаю эту ошибку:
Msg 6505, Level 16, State 2, Procedure usp_UseHelloDotNetAssembly, Line 1
Could not find Type 'ManagedCodeAndSQLServer.
BaseFunctionClass' in assembly 'ManagedCodeAndSQLServer'.
@BradleyUffner Я добавил этот код. Его достаточно? Использовать мастер; предоставить доступ к внешнему доступу к [sa]; использовать образецCLR; –
@BradleyUffner спасибо вам, дорогой друг –
Пожалуйста, не используйте 'UNSAFE', нет абсолютно никаких оснований для того, чтобы этот код не был помечен как' SAFE'. Кроме того, вам никогда не нужно предоставлять разрешения для 'sa', поскольку у этого пользователя всегда есть все разрешения. –