Ricerca…


Abilita CLR sul database

Le procedure CLR non sono abilitate per impostazione predefinita. È necessario eseguire le seguenti query per abilitare CLR:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

Inoltre, se alcuni moduli CLR necessitano di un accesso esterno, è necessario impostare la proprietà TRUSTWORTHY su ON nel proprio database:

ALTER DATABASE MyDbWithClr SET TRUSTWORTHY ON

Aggiunta di .dll che contiene moduli CLR Sql

Procedure, funzioni, trigger e tipi scritti nelle lingue .Net sono memorizzati in file .dll. Una volta creato il file .dll contenente le procedure CLR, è necessario importarlo in SQL Server:

CREATE ASSEMBLY MyLibrary
FROM 'C:\lib\MyStoredProcedures.dll'
    WITH PERMISSION_SET = EXTERNAL_ACCESS

PERMISSION_SET è sicuro per impostazione predefinita, il che significa che il codice in .dll non ha bisogno dell'autorizzazione per accedere a risorse esterne (ad esempio file, siti Web, altri server) e che non utilizzerà il codice nativo che può accedere alla memoria.

PERMISSION_SET = EXTERNAL_ACCESS viene utilizzato per contrassegnare gli assembly che contengono codice che accederà a risorse esterne.

puoi trovare informazioni sui file di assemblaggio CLR correnti nella vista sys.assemblies:

SELECT *
FROM sys.assemblies asms
WHERE is_user_defined = 1

Creare la funzione CLR in SQL Server

Se hai creato la funzione .Net, l'hai compilata in .dll e l'hai importata nel server SQL come un assembly, puoi creare una funzione definita dall'utente che fa riferimento alla funzione in quell'assembly:

CREATE FUNCTION dbo.TextCompress(@input nvarchar(max)) 
RETURNS varbinary(max) 
AS EXTERNAL NAME MyLibrary.[Name.Space.ClassName].TextCompress 

È necessario specificare il nome della funzione e della firma con i parametri di input e i valori di ritorno che corrispondono alla funzione .Net. Nella clausola AS EXTERNAL NAME è necessario specificare il nome assembly, il nome spazio / classe in cui viene inserita questa funzione e il nome del metodo nella classe che contiene il codice che verrà esposto come funzione.

È possibile trovare informazioni sulle funzioni CLR utilizzando la seguente query:

SELECT * FROM dbo.sysobjects WHERE TYPE ='FS'

Crea CLR Tipo definito dall'utente in SQL Server

Se hai creato la classe .Net che rappresenta un tipo definito dall'utente, lo hai compilato in .dll e lo hai importato nel server SQL come un assembly, puoi creare una funzione definita dall'utente che fa riferimento a questa classe:

CREATE TYPE dbo.Point
EXTERNAL NAME MyLibrary.[Name.Space.Point]

È necessario specificare il nome del tipo che verrà utilizzato nelle query T-SQL. Nella clausola EXTERNAL NAME è necessario specificare nome assembly, spazio dei nomi e nome classe.

Creare la procedura CLR in SQL Server

Se hai creato il metodo .Net in una classe, lo hai compilato in .dll e lo hai importato nel server SQL come un assembly, puoi creare una stored procedure definita dall'utente che fa riferimento al metodo in quell'assembly:

CREATE PROCEDURE dbo.DoSomethng(@input nvarchar(max)) 
AS EXTERNAL NAME MyLibrary.[Name.Space.ClassName].DoSomething

È necessario specificare il nome della procedura e la firma con i parametri di input che corrispondono al metodo .Net. Nella clausola AS EXTERNAL NAME è necessario specificare il nome assembly, il nome spazio / classe in cui viene inserita questa procedura e il nome del metodo nella classe che contiene il codice che verrà esposto come procedura.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow