Delen via


Integratie van Common Language Runtime (CLR)

van toepassing op:SQL ServerAzure SQL Managed Instance

SQL Server en Azure SQL Managed Instance u in staat stellen om enkele functies met .NET-talen te implementeren met behulp van de systeemeigen CLR-integratie (Common Language Runtime) als MODULES aan de serverzijde van SQL Server (procedures, functies en triggers). De CLR levert beheerde code met services zoals integratie tussen talen, beveiliging van codetoegang, levensduurbeheer van objecten en ondersteuning voor foutopsporing en profilering.

Voor SQL Server-gebruikers en toepassingsontwikkelaars betekent CLR-integratie dat u opgeslagen procedures, triggers, door de gebruiker gedefinieerde typen, door de gebruiker gedefinieerde functies (scalaire en tabelwaarde) en door de gebruiker gedefinieerde statistische functies kunt schrijven met behulp van een .NET Framework-taal, waaronder C# Visual Basic .NET. SQL Server bevat de vooraf geïnstalleerde .NET Framework-versie 4.

In deze video van 6 minuten ziet u hoe u CLR gebruikt in Azure SQL Managed Instance:

 

Beveiliging van codetoegang wordt niet meer ondersteund

CLR maakt gebruik van CAS (Code Access Security) in .NET Framework, dat niet meer wordt ondersteund als een beveiligingsgrens. Een CLR-assembly die is gemaakt met PERMISSION_SET = SAFE kan mogelijk toegang krijgen tot externe systeembronnen, onbeheerde code aanroepen en sysadmin-bevoegdheden verkrijgen. In SQL Server 2017 (14.x) en latere versies verbetert de sp_configure optie, strikte beveiliging, de beveiliging van CLR-assembly's. clr strict security is standaard ingeschakeld en behandelt SAFE en EXTERNAL_ACCESS assembly's alsof ze zijn gemarkeerd als UNSAFE. De optie clr strict security kan worden uitgeschakeld voor achterwaartse compatibiliteit, maar wordt niet aanbevolen.

U wordt aangeraden alle assembly's te ondertekenen met een certificaat of asymmetrische sleutel, met een bijbehorende aanmelding die is verleend UNSAFE ASSEMBLY machtiging in de master-database. SQL Server-beheerders kunnen ook assembly's toevoegen aan een lijst met assembly's, die de Database Engine moet vertrouwen. Zie sys.sp_add_trusted_assemblyvoor meer informatie.

Wanneer gebruikt u CLR-modules?

Met CLR-integratie kunt u complexe functies implementeren die beschikbaar zijn in .NET Framework, zoals reguliere expressies, code voor toegang tot externe resources (servers, webservices, databases), aangepaste versleuteling, enzovoort. Enkele voordelen van de CLR-integratie aan de serverzijde zijn:

  • Een beter programmeermodel. De .NET Framework-talen zijn in veel opzichten rijker dan Transact-SQL, met constructies en mogelijkheden die eerder niet beschikbaar waren voor SQL Server-ontwikkelaars. Ontwikkelaars kunnen ook gebruikmaken van de kracht van de .NET Framework-bibliotheek, die een uitgebreide set klassen biedt die kunnen worden gebruikt om programmeerproblemen snel en efficiënt op te lossen.

  • Verbeterde veiligheid en beveiliging. Beheerde code wordt uitgevoerd in een algemene runtime-omgeving voor talen die wordt gehost door de database-engine. SQL Server gebruikt dit om een veiliger en veiliger alternatief te bieden voor de uitgebreide opgeslagen procedures die beschikbaar zijn in eerdere versies van SQL Server.

  • Mogelijkheid om gegevenstypen en statistische functies te definiëren. Door de gebruiker gedefinieerde typen en door de gebruiker gedefinieerde aggregaties zijn twee nieuwe beheerde databaseobjecten waarmee de opslag- en querymogelijkheden van SQL Server worden uitgebreid.

  • Gestroomlijnde ontwikkeling via een gestandaardiseerde omgeving. Databaseontwikkeling is geïntegreerd in toekomstige releases van de .NET-ontwikkelomgeving van Visual Studio. Ontwikkelaars gebruiken dezelfde hulpprogramma's voor het ontwikkelen en opsporen van fouten in databaseobjecten en scripts als ze gebruiken voor het schrijven van onderdelen en services in de middelste laag of clientlaag van .NET Framework.

  • Potentieel voor verbeterde prestaties en schaalbaarheid. In veel situaties leveren de compilatie- en uitvoeringsmodellen van .NET Framework verbeterde prestaties ten opzichte van Transact-SQL.

SQL Server Language Extensions een alternatieve uitvoeringsomgeving bieden voor runtimes dicht bij de Database Engine. Zie SQL Server Language Extensions vergelijken met SQL CLRvoor een bespreking van de verschillen tussen SQL CLR- en SQL CLR-taalextensies.

De volgende tabel bevat de artikelen in deze sectie.

Artikel Beschrijving
Overzicht van CLR-integratie Beschrijft de soorten objecten die kunnen worden gebouwd met behulp van CLR-integratie. Controleert ook de vereisten voor het bouwen van databaseobjecten met behulp van CLR-integratie.
Wat is er nieuw in CLR-integratie? Hierin worden de nieuwe functies in deze release beschreven.
CLR-integratiearchitectuur - door CLR gehoste omgeving Beschrijft de ontwerpdoelen van CLR-integratie.
CLR-integratie inschakelen Hierin wordt beschreven hoe u CLR-integratie inschakelt.