SQL Server CLR编程入门指南

SQL Server 2005引入了一种新的编写数据库对象的方式,使得.NET开发者可以利用CLR存储过程来获取或存储数据,编写触发器、用户定义函数等,并通过SQL Server获得.NET框架的强大功能。本文旨在帮助读者理解如何在SQL Server中构建自己的数据类型和对象。

数据库是存储业务逻辑的理想场所。可以创建存储过程、函数等来构建业务逻辑,以便从应用程序中使用这些接口获取数据,而无需编写插入/更新语句。甚至可以在运行查询之前检查用户权限,如果会话、认证令牌等都存储在数据库中。

优势

扩展存储过程已经存在于早期版本的数据库中。这些对象可以像普通可执行文件一样在系统中执行任何操作。CLR存储过程的主要优势在于:

  • CLR存储过程旨在在托管环境中工作,因此所有托管环境的好处(如垃圾回收)都适用于这些对象。
  • 可以利用.NET库中提供的大量类的优势。
  • 两者都使用数据库内存,因此不会为运行代码创建新进程。

当调用这些对象时,它首先会去数据库中注册的程序集中找到与调用对象关联的类。然后,它会使用数据库连接的上下文调用该对象。

支持的对象类型

SQL Server 2005的CLR支持五种类型的对象:

可以根据需要使用它们,并将它们导入数据库引擎。在讨论每种类型之前,首先让在Visual Studio中创建一个示例应用程序。

创建第一个SQL Server项目

启动Visual Studio,并选择“新建项目”。将看到“新建项目”对话框。从左侧树形结构中选择“数据库”,然后选择“SQL Server项目”。选择希望的位置并点击“确定”。

接下来,会出现一系列消息框。首先出现的是数据库连接选择框。可以选择数据库连接,也可以选择添加新的引用以添加新的数据库连接。

这个连接将被Visual Studio用于部署应用程序。之后,会出现两个警告消息框:

如果使用的是测试数据库连接,那么只需对这些消息框确认即可。

完成这些步骤后,将创建一个新项目,其中包含一个名为“Test”的文件夹和一个SQL文件。稍后会讨论这个。

在解决方案资源管理器中,会发现一个存储过程文件已经创建好了。可以删除该文件,并根据需求选择一个新的对象。

让首先选择存储过程。

系统会提示输入存储过程的名称。可以随意命名。在示例中,创建了一个名为“MyFirstCLRSP”的类。让在下面编写它的代码:

public partial class StoredProcedures { [Microsoft.SqlServer.Server.SqlProcedure] public static void MyFirstCLRSP() { SqlPipe p; // Pipe object to send data to Database Engine p = SqlContext.Pipe; p.Send("Not Implemented!!"); } };

编译后,可以通过手动或自动的方式在数据库中运行它。

自动部署项目

如果想自动部署,只需在解决方案资源管理器上右键单击 -> 部署解决方案。它将自动部署到数据库。

  1. 首先,需要构建应用程序以创建一个DLL。
  2. 使用以下代码将程序集注册到SQL Server
CREATE ASSEMBLY MyFirstCLRSP FROM 'C:\CLR\CLRproject\CLR\bin\Debug\SqlClassLibrary.dll' WITH PERMISSION_SET = SAFE;
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485