编译和部署 CLR 程序集
来源:互联网 发布:python generator 协程 编辑:程序博客网 时间:2024/05/06 08:28
本主题概要介绍了使用与 Microsoft .NET Framework 公共语言运行库 (CLR) 的 Microsoft SQL Server 集成编译数据库对象所需的命名空间和库。本主题还说明如何编写、编译和运行使用 Microsoft Visual C# 编写的简单 CLR 存储过程。
所需的命名空间
在安装 SQL Server 2005 时也一起安装了开发基本 CLR 数据库对象所需的组件。CLR 集成功能在名为 system.data.dll 的程序集中公开,该程序集是 .NET Framework 的一部分。在全局程序集缓存 (GAC) 以及 .NET Framework 目录中都可以找到此程序集。对此程序集的引用通常由命令行工具和 Microsoft Visual Studio 自动添加,因此无需手动添加它。
system.data.dll 程序集包含以下命名空间,这些命名空间是编译 CLR 数据库对象所必需的:
System.Data
System.Data.Sql
Microsoft.SqlServer.Server
System.Data.SqlTypes
编写一个简单的“Hello World”存储过程
将以下 Visual C# 代码复制并粘贴到一个文本编辑器中,然后在名为“helloworld.cs”或“helloworld.vb”的文件中保存它。
using System;using System.Data;using Microsoft.SqlServer.Server;using System.Data.SqlTypes;public class HelloWorldProc{ [Microsoft.SqlServer.Server.SqlProcedure] public static void HelloWorld() { SqlContext.Pipe.Send("Hello world!/n"); }}
Imports SystemImports System.DataImports Microsoft.SqlServer.ServerImports System.Data.SqlTypes Public Class HelloWorldProc <Microsoft.SqlServer.Server.SqlProcedure> _ Public Shared Sub HelloWorld() SqlContext.Pipe.Send("Hello world!/n") End SubEnd Class
这个简单的程序包含针对一个公共类的单个静态方法。此方法使用两个新类:SqlContext 和 SqlPipe,它们用于创建托管数据库对象以输出一个简单的文本消息。此方法可以声明为 SQL Server 中的存储过程,然后采用与 Transact-SQL 存储过程相同的方式运行。
我们现在将此程序编译为一个库,将它加载到 SQL Server 中,并且将它作为存储过程运行。
编译该“Hello World”存储过程
在默认情况下 SQL Server 安装 .NET Framework 重新分发文件。这些文件包括 csc.exe 和 vbc.exe,它们是分别用于 Visual C# 和 Visual Basic 程序的命令行编译器。为了编译我们的示例,请修改您的路径变量以指向包含 csc.exe 或 vbc.exe 的目录。下面是 .NET Framework 的默认安装路径。
C:/Windows/Microsoft.NET/Framework/(version)
Version 目录包含已安装的 .NET Framework 可重新发布文件的版本号。例如:
C:/Windows/Microsoft.NET/Framework/v2.0.31113
一旦将 .NET Framework 目录添加到您的路径后,就可以使用以下命令将该存储过程示例编译到某一程序集中。
对于 Visual C# 源文件:
csc /target:library helloworld.cs
对于 Visual Basic 源文件:
vbc /target:library helloworld.vb
/target 选项允许您将它编译到某一程序集中。
这些命令使用 /target 选项启动 Visual C# 或 Visual Basic 编译器,以指定生成一个库 DLL。
在 SQL Server 中加载和运行“Hello World”存储过程
一旦该存储过程示例已成功编译后,您就可以在 SQL Server 中测试它了。为此,打开 SQL Server Management Studio 并创建一个新查询,连接到适当的测试数据库(例如,AdventureWorks 示例数据库)。
我们将需要创建该程序集,以便我们可以访问该存储过程。对于此示例,我们将假定您已在 C:/ 目录中创建了 helloworld.dll 程序集。将以下 Transact-SQL 语句添加到您的查询中。
CREATE ASSEMBLY helloworld from 'c:/helloworld.dll' WITH PERMISSION_SET = SAFE
在创建了该程序集之后,现在可以通过使用 create procedure 语句访问我们的 HelloWorld 方法。我们将该存储过程称作“hello”:
CREATE PROCEDURE hello AS EXTERNAL NAME helloworld.HelloWorldProc.HelloWorld
一旦创建了该存储过程后,它就可以像在 Transact-SQL 中编写的普通存储过程一样运行它了。请执行以下命令:
EXEC hello
这应在 SQL Server Management Studio 消息窗口中产生以下输出。
Hello world!
删除该“Hello World”存储过程示例
在您完成该存储过程示例的运行后,可以从测试数据库中该删除存储过程和程序集。
首先,使用 drop procedure 命令删除该存储过程。
drop procedure hello
删除了该存储过程后,可以删除包含您的示例代码的程序集。
drop assembly helloworld
- 编译和部署 CLR 程序集
- 编译和部署CLR程序集
- 手动部署C#存储过程(CLR程序集)
- [转]clr 强命名程序集和共享程序集
- CLR之程序集
- CLR程序集里的 ExecuteScalar() 和 @@IDENTITY
- CLR查找和加载程序集的方式
- CLR查找和加载程序集的方式
- CLR查找和加载程序集的方式
- 《CLR中的程序集加载》
- SQL Server 2008R2部署程序集时"Clr 程序集必须具有指定的主文件"的处理方法
- sql server2005关联clr程序集及创建clr函数
- Linux下编译和部署JavaWeb程序脚本
- Linux下编译和部署JavaWeb程序脚本
- Linux下编译和部署JavaWeb程序脚本
- CLR基础---共享程序集和强命名程序集(二)
- CLR基础---共享程序集和强命名程序集(一)
- 部署clr存储过程
- C#写的程序集注册成标准的Com组件,在asp中用Server.CreateObject()调用。
- 转贴 一个图形爱好者的书架.-也来介绍一下我的藏书
- 数据访问层
- 用C#创建SQL Server的存储过程
- 经典的电容使用知识
- 编译和部署 CLR 程序集
- 业务逻辑层
- Exchange Server 2003 and Domain Controllers - A Summary
- ListCtrl控件的滚动条拖动疑难杂症
- 详尽解析window.event对象
- 关于OPENGL坐标的问题(转)
- 页面显示层
- 伤心中
- WPF全景体验