What is the CLR integration on SQL Server?
Included in SQL Server 2005, the CLR is the heart of the Microsoft .NET Framework.
The common language runtime (CLR), also known as SQLCLR, allows you to create database objects (functions, triggers, store procedures, etc.) using .Net Framework (managed code).
CLR integration offers the potential for improved performance.
Managed code is better suited than T-SQL for some complex tasks, including string handling and regular expressions. Using the functionality found in the .NET Framework library, you can have access to thousands of pre-built classes and routines.
Why should you care about it?
Many developers who implemented SQL CLR procedures (or other objects) do not understand the consequences of running assemblies in modes other than safe mode.
Assemblies created with UNSAFE
permission can perform actions that can compromise the security features within the operating system or the SQL Server instance.
How can I check if CLR is enabled?
You can use the script below to check if the CLR feature is enabled.
SELECT CASE
WHEN value = 0
THEN 'Not Enabled'
ELSE 'Enabled'
END AS Result
FROM sys.configurations
WHERE name = 'clr enabled'
How can I fix it?
You can disable it by running the following script:
sp_configure 'clr enabled'
,0
GO
RECONFIGURE
GO
If you need CLR enabled on your SQL Server, it is strongly recommended (according to best practices) to set CLR strict security to 1.
Upgrading to a newer version of SQL gives you better security options.