Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

CLR Functions

You can create a database object inside an instance of SQL Server that is programmed in an assembly created in the .NET Framework common language runtime (CLR). 
Database objects that can leverage the rich programming model provided by the common language runtime include aggregate functions, functions, stored procedures, triggers, and types.


1. Create the .Net function
Define the function as a static method of a class in a language supported by the .NET Framework.

2. Compile CLR Code
In order to use this code, the code has to be compiled first to create a DLL.
Run from the CMD:
For vb file: 
vbc /target:library C:\Tmp\ClrExample.vb
For C# file: 
Csc /target:library C:\Tmp\ClrExample.Cs

3. Enabling CLR Integration:
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

4. Create assembly in SQL Server
CREATE ASSEMBLY [ClrExampleAssembly] FROM 'C:\Tmp\ClrExample.dll'
GO

5. Create a Function or Stored-Procedure using the CLR function

CREATE FUNCTION [dbo].[ClrExampleUserDefinedFunc](<parameters of the function>)
RETURNS <TYPE>
WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME ClrExampleAssembly.<Class name in the code>.<Function name in the code>

<TYPE> examples:
TABLE ([StringCol] [nvarchar](max) NULL) 
RETURNS [nvarchar](255)


CREATE  PROCEDURE dbo.ClrExampleSP
<parameters of the function>
With Execute As Caller 
As 
External Name ClrExampleAssembly.<Class name in the code>.<Function name in the code>
Go

6. Use it!
-- FUNCTION:
SELECT * FROM dbo.ClrExampleUserDefinedFunc(<parameters of the function>)
--SP:
Execute ClrExampleSP <parameters of the function>

No comments:

Post a Comment