本文叙述了创建CLR存储过程,从理论到实践,笔者把代码做了清晰地解释,能保证你能明白,希望通过此文能给你带来帮助。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的木垒哈萨克网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
首先,打开Visual Studio,点击“创建”->“Visual C# ”->“数据库”->“SQL Server 项目”。选择完成后,会自动弹出一个数据库连接的窗口,按照你的实际情况选择吧,这里没什么不同,就不多说了。按照这个步骤就可以创建一个新的SQL Server项目。
其次,右击项目名称,点击“添加”->“CLR存储过程”,这时会项目里会多出一个.cs文件。编辑一下。
- using System;
- using System.Data;
- using System.Data.SqlClient;
- using System.Data.SqlTypes;
- using Microsoft.SqlServer.Server;
- public partial class Test
- {
- [Microsoft.SqlServer.Server.SqlProcedure]
- public static void StoredProcedures()
- {
- // 在此处放置代码
- SqlPipe sp = SqlContext.Pipe;
- string sql = "Select * from [Table_1]";
- using (SqlConnection conn = new SqlConnection
- ("context connection=true"))
- {
- conn.Open();
- SqlCommand cmd = new SqlCommand();
- cmd.CommandType = CommandType.Text;
- cmd.Connection = conn;
- cmd.CommandText = sql;
- SqlDataReader rdr = cmd.ExecuteReader();
- sp.Send(rdr);
- conn.Close();
- }
- }
- };
第16行:using (SqlConnection conn = new SqlConnection("context connection=true")) 是指“上下文连接”可以让你使用当前登录到数据库的用户作为你的登录数据库的验证信息。
编辑完成后,我们可以编译一下,如果编译通过。我们就可以将其部署到SQL Server上了。右击项目名称,选择“部署”就OK了。当然直接“运行”,系统也会自动部署它的。
这个时候,如果我们在SQL Server中执行我们的CLR存储过程,恐怕它会提示有错误。“禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项。
”这个时候,我们需要执行下面这段脚本
- --在Sql Server中执行这段代码可以开启CLR
- exec sp_configure 'show advanced options', '1';
- go
- reconfigure;
- go
- exec sp_configure 'clr enabled', '1'
- go
- reconfigure;
- exec sp_configure 'show advanced options', '1';
- go
现在好了。再次执行CLR存储过程“Exec StoredProcedures”。就完成了。
Transact-SQL 存储过程与CLR存储过程,基本上没有什么不同,不过CLR存储过程是不能在SQL Server里被“修改”的,选择“Create”、“Alter”等也都是看不到存储过程内部的。真正的内容只能在“SQL Server 项目”中才能看得到。
性能上,我之前试了100000条的数据,同样都是“Select * From 【Table】”Transact-SQL 存储过程用了大约8秒钟,而CLR存储过程用了大约9~10秒钟,所以肯定还是Transact-SQL 存储过程会比CLR存储过程稍快些。
有人说Transact-SQL 存储过程没有CLR存储过程简便、容易修改,暂时本人却还没有看出什么端倪,等待日后发掘。
网页题目:经典讲解创建CLR存储过程
文章位置:http://www.shufengxianlan.com/qtweb/news44/267194.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联