Dela via


CLR-integrering (Common Language Runtime)

gäller för:SQL ServerAzure SQL Managed Instance

MED SQL Server och Azure SQL Managed Instance kan du implementera några av funktionerna med .NET-språk med hjälp av CLR-integrering (native common language runtime) som SQL Server-moduler på serversidan (procedurer, funktioner och utlösare). CLR tillhandahåller hanterad kod med tjänster som integrering mellan språk, säkerhet för kodåtkomst, hantering av objektlivslängd samt stöd för felsökning och profilering.

För SQL Server-användare och programutvecklare innebär CLR-integrering att du kan skriva lagrade procedurer, utlösare, användardefinierade typer, användardefinierade funktioner (skalär och tabellvärde) och användardefinierade mängdfunktioner med hjälp av alla .NET Framework-språk, inklusive C# Visual Basic .NET. SQL Server innehåller .NET Framework version 4 förinstallerad.

Den här videon på 6 minuter visar hur du använder CLR i Azure SQL Managed Instance:

 

Kodåtkomstsäkerhet stöds inte längre

CLR använder Code Access Security (CAS) i .NET Framework, som inte längre stöds som en säkerhetsgräns. En CLR-sammansättning som skapats med PERMISSION_SET = SAFE kan komma åt externa systemresurser, anropa ohanterad kod och hämta sysadmin-privilegier. I SQL Server 2017 (14.x) och senare versioner förbättrar alternativet sp_configure, strikt säkerhet, säkerheten för CLR-sammansättningar. clr strict security är aktiverat som standard och behandlar SAFE och EXTERNAL_ACCESS sammansättningar som om de hade markerats UNSAFE. Alternativet clr strict security kan inaktiveras för bakåtkompatibilitet, men rekommenderas inte.

Vi rekommenderar att du signerar alla sammansättningar med ett certifikat eller en asymmetrisk nyckel, med en motsvarande inloggning som har beviljats UNSAFE ASSEMBLY behörighet i master-databasen. SQL Server-administratörer kan också lägga till sammansättningar i en lista över sammansättningar som databasmotorn bör lita på. Mer information finns i sys.sp_add_trusted_assembly.

När du ska använda CLR-moduler

Med CLR-integrering kan du implementera komplexa funktioner som är tillgängliga i .NET Framework, till exempel reguljära uttryck, kod för åtkomst till externa resurser (servrar, webbtjänster, databaser), anpassad kryptering osv. Några av fördelarna med CLR-integrering på serversidan är:

  • En bättre programmeringsmodell. .NET Framework-språken är i många avseenden rikare än Transact-SQL och erbjuder konstruktioner och funktioner som tidigare inte var tillgängliga för SQL Server-utvecklare. Utvecklare kan också använda kraften i .NET Framework-biblioteket, som tillhandahåller en omfattande uppsättning klasser som kan användas för att snabbt och effektivt lösa programmeringsproblem.

  • Förbättrad säkerhet och säkerhet. Hanterad kod körs i en vanlig körningsmiljö för språk, som hanteras av databasmotorn. SQL Server använder detta för att tillhandahålla ett säkrare och säkrare alternativ till de utökade lagrade procedurerna som är tillgängliga i tidigare versioner av SQL Server.

  • Möjlighet att definiera datatyper och aggregerade funktioner. Användardefinierade typer och användardefinierade aggregeringar är två nya hanterade databasobjekt som utökar lagrings- och frågefunktionerna i SQL Server.

  • Effektiviserad utveckling via en standardiserad miljö. Databasutveckling integreras i framtida versioner av Visual Studio .NET-utvecklingsmiljön. Utvecklare använder samma verktyg för att utveckla och felsöka databasobjekt och skript som de använder för att skriva .NET Framework-komponenter och -tjänster på mellannivå eller klientnivå.

  • Potential för bättre prestanda och skalbarhet. I många situationer ger .NET Framework-språkkompilerings- och körningsmodellerna bättre prestanda jämfört med Transact-SQL.

SQL Server Language Extensions tillhandahålla en alternativ körningsmiljö för körningar nära databasmotorn. En diskussion om skillnaderna mellan SQL CLR- och SQL-språktillägg finns i Jämför SQL Server Language Extensions med SQL CLR-.

I följande tabell visas artiklarna i det här avsnittet.

Artikel Beskrivning
CLR-integreringsöversikt Beskriver de typer av objekt som kan skapas med hjälp av CLR-integrering. Granskar också kraven för att skapa databasobjekt med hjälp av CLR-integrering.
Vad är nytt i CLR-integrering? Beskriver de nya funktionerna i den här versionen.
CLR-integreringsarkitektur – CLR-värdbaserad miljö Beskriver designmålen för CLR-integrering.
Aktivera CLR-integrering Beskriver hur du aktiverar CLR-integrering.