Skip to content

Latest commit

 

History

History
71 lines (52 loc) · 5.13 KB

building-database-objects-with-common-language-runtime-clr-integration.md

File metadata and controls

71 lines (52 loc) · 5.13 KB
title description ms.custom ms.date ms.prod ms.reviewer ms.technology ms.topic helpviewer_keywords ms.assetid author ms.author
Common Language Runtime (CLR) build database objects
Build database objects using the SQL Server integration with the .NET Framework common language runtime (CLR).
seo-lt-2019
03/17/2017
sql
clr
reference
routines [CLR integration]
database objects [CLR integration], building
common language runtime [SQL Server], building database objects
managed code [SQL Server], database objects
building database objects [CLR integration]
.NET Framework routines [SQL Server]
ce34132c-bfa3-447b-9131-b6e17c672efe
rothja
jroth

Building Database Objects with Common Language Runtime (CLR) Integration

[!INCLUDE SQL Server] You can build database objects using the [!INCLUDEssNoVersion] integration with the .NET Framework common language runtime (CLR). Managed code that runs inside of [!INCLUDEmsCoName] [!INCLUDEssNoVersion] is referred to as a "CLR routine." These routines include:

  • Scalar-valued user-defined functions (scalar UDFs)

  • Table-valued user-defined functions (TVFs)

  • User-defined procedures (UDPs)

  • User-defined triggers

CLR routines have the same structure in managed code. They are mapped to public, static (shared in [!INCLUDEmsCoName] Visual Basic .NET) methods of a class. In addition to routines, user-defined types (UDTs) and user-defined aggregate functions can also be defined using the .NET Framework. UDTs and user-defined aggregates are mapped to entire .NET Framework classes.

Each type of .NET Framework routine has a [!INCLUDEtsql] declaration and can be used anywhere in [!INCLUDEssNoVersion] that the [!INCLUDEtsql] equivalent can be used. For instance, scalar UDFs can be used in any scalar expression. A TVF can be used in any FROM clause. A procedure can be invoked in an EXEC statement or invoked from a client application.

Note

Execution of a CLR object (user-defined function, user-defined type, or trigger) on the common language runtime can take place on multiple threads (parallel plan), if the query optimizer decides it is beneficial. However, if a user-defined function accesses data, execution will be on a serial plan. When executed on a server version prior to [!INCLUDEssKatmai], if a user-defined function contains LOB parameters or return values, execution also must be on a serial plan.

The following table lists the topics covered in this section.

Getting Started with CLR Integration
Provides a brief overview of the libraries and namespaces required to compile object using CLR integration with [!INCLUDEssNoVersion]. Includes an example "Hello World" CLR stored procedure.

Supported .NET Framework Libraries
Provides information on the .NET Framework libraries supported by CLR integration.

CLR Integration Programming Model Restrictions
Provides information about CLR integration programming model restrictions.

SQL Server Data Types in the .NET Framework
An overview of [!INCLUDEssNoVersion] data types and their .NET Framework equivalents.

Overview of CLR Integration Custom Attributes
Provides information about CLR integration custom attributes.

CLR User-Defined Functions
Describes how to implement and use the various types of CLR functions: table-valued, scalar, and user-defined aggregate functions.

CLR User-Defined Types
Describes how to implement and use CLR user-defined types.

CLR Stored Procedures
Describes how to implement and use CLR stored procedures.

CLR Triggers
Describes how to implement and use CLR triggers.

See Also

Common Language Runtime (CLR) Integration Overview