Sql2008中添加程序集(转)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 一、示例演示 1、用C# 建立数据库 CRL 项目 public partial class MyClr{    [Microsoft.SqlServer.Server.SqlFunction]    public static SqlBoolean CLRFBitContains(s...

一、示例演示

1、用C# 建立数据库 CRL 项目

public partial class MyClr
{
     [ Microsoft.SqlServer.Server.SqlFunction ]
     public static SqlBoolean CLRFBitContains(string MyBigIntValue,  int Row)
    {
         // 在此处放置代码
         return (new MyBigInt(MyBigIntValue)  & MyBigInt.CreateByBitPositon( Convert.ToUInt32(Row)))  == MyBigInt.Zero;
    }

2、数据库初始化

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
   ALTER  DATABASE  DB_Name  set TRUSTWORTHY  on;
go 

3、数据库添加程序集

  create assembly MyClr
from  ' R:\MyApp\MyClr\MyClr\bin\Debug\MyClr.dll '
WITH permission_set  = Safe;

4、数据库添加函数映射

create  function ClrFBitContains
@val  as  nvarchar( 4000) ,  @RowIndex  as   int )
returns  bit
as
  external  name MyClr.MyClr.CLRFBitContains  ; 
TestSql:
select dbo.ClrFBitContains( ' F0F ', 11)

二、在sqlserver中如果要使用一个程序集一般有如下注意事项 

1、打开sqlserver 的CLR支持,即在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

2、是否需要访问外部资源,如果需要访问外部资源还需要执行下面的,即打开数据库的TRUSTWORTHY 属性

ALTER  DATABASE  DB_Name  set TRUSTWORTHY  on;

三、在sqlserver中如果要使用一个程序集一般有两种方法

 方法一:通过T-SQL手动将该程序集放入到SQL Server 其步骤如下

1、创建将要使用的程序集.dll

程序上没什么稀奇的,跟普通的ado.net的程序差不多主要就是方法上加了一个属性  (<System.Data.Sql.SqlProcedure(name:="WriteHashedPassword")>)

2、部署程序集到sqlserver

a、打开sqlserver中clr中相关的支持(方法如上)

b、添加程序集到sqlserver

Create assembly SqlServerProject1
     authorization dbo
     from  ' E:\test\dotnet\SqlServerProject1\SqlServerProject1\bin\SqlServerProject1.dll '
     with permission_set =external_access

c、添加存储过程

Create  Procuce  [ dbo ]. [ 存储过程名称 ] 
     @from  [ nvarchar ]( 50),  --  参数列表
     @to  [ nvarchar ]( 50)
     WITH  EXECUTE  AS CALLER
     AS
    EXTERNAL NAME  [ 程序集的名称 ]. [ StoredProcedures ]. [ 存储过程名称 ]

d、执行存储过程

 

exec CLRSPTest  @sql = ' select * from t2 ', @path = ' e:\a\11.txt ' 

 

方法二:通过Visual Studio 2005创建供并部署SQL Server 2005用的Assembly

1、打开Visual Studio 2005新建项目类型为数据库的sqlserver项目

2、创建所需要的存储过程,函数等

3、编译该项目

4、部署该项目(此时我们打开sqlserver相应的数据库可以看到存储过程目录及程序集等目录下有相应创建的对象了)

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
8天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
17 0
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0
|
2月前
|
SQL 存储 数据处理
Flink SQL 问题之提交程序运行报错如何解决
Flink SQL报错通常指在使用Apache Flink的SQL接口执行数据处理任务时遇到的问题;本合集将收集常见的Flink SQL报错情况及其解决方法,帮助用户迅速恢复数据处理流程。
50 3
|
9月前
|
SQL 存储 关系型数据库
WEB应用程序数据库防守篇之预防SQL漏洞注入
主要介绍SQL注入的危害会引发的后果以及如何预防等
413 1
WEB应用程序数据库防守篇之预防SQL漏洞注入
|
5月前
|
SQL 分布式计算 Java
201 Spark SQL查询程序
201 Spark SQL查询程序
35 0
|
6月前
|
SQL 前端开发 Java
JSP软件产品管理系统myeclipse开发sql计算机程序web结构java编程网页源码
JSP软件产品管理系统是一套完善的毕业设计系统(servlet+dao+bean模式开发)MVC结构,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发
30 0
|
6月前
|
SQL Java 数据库
JSP汽车销售管理系统myeclipse开发sql计算机程序web结构java编程网页源码
JSP 汽车销售管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发
45 0
|
6月前
|
SQL Java 应用服务中间件
JSPOA信息管理系统myeclipse开发sql计算机程序web结构java编程网页源码
JSPOA信息管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
23 0
|
11月前
|
SQL JSON 安全
基于JSON的SQL注入攻击触发需要更新Web应用程序防火墙
基于JSON的SQL注入攻击触发需要更新Web应用程序防火墙