使用公共语言运行时 (CLR) 集成生成数据库对象

可以将 SQL Server 与 .NET Framework 公共语言运行时 (CLR) 集成来生成数据库对象。在 Microsoft SQL Server 内部运行的托管代码被称为“CLR 例程”。这些例程包括:

  • 标量值用户定义函数(标量 UDF)

  • 表值用户定义函数 (TVF)

  • 用户定义的过程 (UDP)

  • 用户定义的触发器

CLR 例程在托管代码中具有相同的结构。它们映射为某个类的公共静态(在 Microsoft Visual Basic .NET 中共享)方法。除了例程之外,还可以使用 .NET Framework 定义用户定义类型 (UDT) 和用户定义的聚合函数。将 UDT 和用户定义聚合映射为整个 .NET Framework 类。

每种类型的 .NET Framework 例程具有一个 Transact-SQL 声明,可以在 SQL Server 中使用等效 Transact-SQL 的任何地方使用。例如,标量 UDF 可以用于任意标量表达式中。TVF 可以用于任意 FROM 子句中。可以在 EXEC 语句中调用过程或从客户端应用程序调用。

注意注意

如果查询优化器确定这样做有益处,则在公共语言运行时上执行 CLR 对象(用户定义函数、用户定义类型或触发器)可能在多个线程上发生(并行计划)。但是,如果用户定义函数访问数据,则会在串行计划上执行。当在 SQL Server 2008 之前的服务器版本上执行时,如果某一用户定义函数包含 LOB 参数或返回值,则也必须在串行计划上执行。有关详细信息,请参阅并行查询处理

请注意,Visual Studio .NET 2003 无法用于 CLR 集成编程。SQL Server 包含预先安装的 .NET Framework,而 Visual Studio .NET 2003 无法使用 .NET Framework 2.0 程序集。

下表列出了本节涵盖的主题。