Microsoft SQL Server
Vanlig språkintegration
Sök…
Aktivera CLR i databasen
CLR-procedurer är inte aktiverade som standard. Du måste köra följande frågor för att aktivera CLR:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Om någon CLR-modul behöver extern åtkomst bör du dessutom ställa in TRUSTWORTHY-egenskapen till ON i din databas:
ALTER DATABASE MyDbWithClr SET TRUSTWORTHY ON
Lägger till .dll som innehåller Sql CLR-moduler
Förfaranden, funktioner, triggers och typer skrivna på. Net-språk lagras i .dll-filer. När du skapar .dll-fil som innehåller CLR-procedurer bör du importera den till SQL Server:
CREATE ASSEMBLY MyLibrary
FROM 'C:\lib\MyStoredProcedures.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
PERMISSION_SET är som standard säkert, vilket innebär att koden i .dll inte behöver tillåtelse för att få åtkomst till externa resurser (t.ex. filer, webbplatser, andra servrar) och att den inte kommer att använda inbyggd kod som kan komma åt minnet.
PERMISSION_SET = EXTERNAL_ACCESS används för att markera enheter som innehåller kod som kommer åt externa resurser.
du kan hitta information om aktuella CLR-monteringsfiler i sys.assemblies-vyn:
SELECT *
FROM sys.assemblies asms
WHERE is_user_defined = 1
Skapa CLR-funktion i SQL Server
Om du har skapat .Net-funktionen, sammanställt den till .dll och importerat den till SQL-servern som en enhet kan du skapa användardefinierad funktion som refererar till funktionen i den enheten:
CREATE FUNCTION dbo.TextCompress(@input nvarchar(max))
RETURNS varbinary(max)
AS EXTERNAL NAME MyLibrary.[Name.Space.ClassName].TextCompress
Du måste ange namnet på funktionen och signaturen med inmatningsparametrar och returvärden som matchar .Net-funktionen. I AS EXTERNAL NAME-klausulen måste du ange församlingsnamn, namnutrymme / klassnamn där den här funktionen är placerad och namnet på metoden i klassen som innehåller koden som kommer att exponeras som funktion.
Du kan hitta information om CLR-funktionerna med följande fråga:
SELECT * FROM dbo.sysobjects WHERE TYPE ='FS'
Skapa CLR Användardefinierad typ i SQL Server
Om du har skapat .Net-klass som representerar någon användardefinierad typ, sammanställt den till .dll och importerat den till SQL-server som en enhet kan du skapa användardefinierad funktion som refererar till denna klass:
CREATE TYPE dbo.Point
EXTERNAL NAME MyLibrary.[Name.Space.Point]
Du måste ange namnet på den typ som ska användas i T-SQL-frågor. I klausulen EXTERNAL NAME måste du ange församlingsnamn, namnutrymme och klassnamn.
Skapa CLR-procedur i SQL Server
Om du har skapat .Net-metod i någon klass, sammanställt den till .dll och importerat den till SQL-server som en enhet kan du skapa användardefinierad lagrad procedur som refererar till metod i den enheten:
CREATE PROCEDURE dbo.DoSomethng(@input nvarchar(max))
AS EXTERNAL NAME MyLibrary.[Name.Space.ClassName].DoSomething
Du måste ange procedurens namn och signatur med inmatningsparametrar som matchar .Net-metoden. I AS EXTERNAL NAME-klausulen måste du ange monteringsnamn, namnutrymme / klassnamn där den här proceduren är placerad och namnet på metoden i klassen som innehåller koden som kommer att exponeras som procedur.