前言

MSSQLSERVER提供程序集,无疑可以让编程人员更加便捷的操作数据库数据,比如c#写的函数,可以在数据库当作sql的函数使用,你想想他对不熟悉数据库的程序员来说是有多么的嗨。这么好的机制,大家当然不能错过,但是对于数据库变更迁移,可能会存在障碍与不便。所以建议大家在使用sqlsesrver clr程序集的时候也要做个权衡,以免给数据库以后的扩张带来不便。建议大家单次数据,数据过滤,的时候使用sqlserver clr程序集。长期依赖的话,还是另外选择解决方案。

MSSQLSERVER接入c#clr程序集,使c#函数变sql函数

模拟场景:

1、数据库表数据如下

2、问题描述:AreaPoints字段的Json数据格式在c#的第三方json数据解析中是没有问题的。但是他是由多端口调用数据,调用的程序可能是java或者其它语言,那么这种不规范的Json数据格式就不能被解析,这样一来就会存在数据错误。

3、解决方案:这里我就不扯淡啦,方案一定是很多中,今天我切入主体,使用c#的类方法,使不规范的即送数据格式转换成统一规范的Json数据格式。

4、秀具体操作如下。

MSSQLSERVER接入c#clr程序集,具体操作步骤,跟着做

1、创建c#函数。解决方案下添加--->新建项目

2、添加-->新建项---SQL Server ---SQL CLR C#------SQL CLR C#用户定义的函数

3、创建c#函数方法,不规则json转规范的json格式

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server; public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
//静态方法
public static SqlString ToJson1(SqlString str)
{
try
{
string json = str.ToString();
//双引号不变
if (json.Contains("\""))
{
return json;
}
//单引号换双引号
else if (json.Contains("'"))
{
return json.Replace("'", "\"");
}
//没引号的加双引号
else if (json.Contains("lng:"))
{
json = json.Replace("lat", "\"lat\"").Replace(":", ":\"").Replace(",lng", "\",\"lng\"").Replace("}", "\"}");
return json;
}
else
{
return json;
}
}
catch
{
return str;
}
}
}

SQLSERVER添加Sql c# clr的2种方式展示,1、程序发布。

1、查看自己建立的c# clr 程序的属性,选中项目设置,确定目标平台与自己所要生成到的数据版本一直,不要一边是sqlserver2008一遍是sqlserver2012,这样是发布不成功的。还有选择SQLCLR,目标框架要在4.0一下,我选用的是3.5.

2、开启数据库服务器配置选项clr enabled

---开启所有服务器配置选项
EXEC sp_configure N'show advanced options', N''
RECONFIGURE WITH OVERRIDE
--开启clr enabled 选项
EXEC sp_configure N'clr enabled', N''
RECONFIGURE WITH OVERRIDE
--关闭所有服务器配置选项
EXEC sp_configure N'show advanced options', N''
RECONFIGURE WITH OVERRIDE
--如果存在权限问题,执行下面一段脚本
alter database [master] set TRUSTWORTHY on
EXEC sp_changedbowner 'sa'

3、发布 sql c# clr 程序集,选择要发布的服务器,与要发布到哪个数据库。确定。

4.配置发布成功

SQLSERVER添加Sql c# clr的2中方式展示,2、手动在数据库添加程序集。

1、找到自己写的sql c# clr 程序集下生成的bin文件夹下的dll文件

2、同样执行上面的脚本,开启数据库服务器配置选项clr enabled,还有给sa付权限的脚本。

3、打开数据库下的可编程性,程序集,新建程序集

4、执行下面注册函数的脚本

create function dbo.ToJson1(@patten [nvarchar](4000))
RETURNS nvarchar(4000)
AS
---sql c# clr 程序集文件名.类名.方法名
EXTERNAL NAME BgSqlFun.UserDefinedFunctions.ToJson1

sql c# clr 自定义函数的使用

上面2种添加方式,任意一种添加都行。

declare @points varchar(4000);
select @points=AreaPoints from Mp_AreaPositionDetails where id=672
select dbo.ToJson1(@points)

就这样做啦一个简单的示例,希望能给一些选手,提供到帮助。thanks。

MSSQLSERVER添加c# clr程序集的使用方法的更多相关文章

  1. 手工部署Sqlserver CLR程序集

    原文 手工部署Sqlserver CLR程序集 以前一直用VS部署Sqlserver CLR程序集简单省事,现在服务器部署在内网了,必须手动更新部署Sqlserver CLR程序集.    开始以为A ...

  2. ecshop后台增加|添加商店设置选项和使用方法详解

    有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...

  3. 在SQL2005中部署CLR 程序集

    原文 在SQL2005中部署CLR 程序集 有关于CLR函数的用途和用法,请了解 SQL Server CLR 极速入门,启用.设计.部署.运行 http://www.yongfa365.com/It ...

  4. jquery中找到元素在数组中位置,添加或者删除元素的新方法

    一:查找元素在数组中的位置 jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值.如果数组中不存在该值,则返回 -1. jQuery.inArray( value, array ...

  5. 为WebService添加身份验证的两种方法

    方法一:SoapHeader 辅助类:MySoapHeader //SoapHeader 添加引用 using System.Web.Services.Protocols; #region 配置登录标 ...

  6. JabRef中添加中文文献出现乱码 解决方法

    JabRef中添加中文文献出现乱码 解决方法     问题描述 JaBRef是一款开源的文献管理软件,主要用来管理bibtex格式的参考文献,可以与LATEX配合使用,方便论文参考文献的使用.文献管理 ...

  7. 向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转]

    向ArcGIS的ToolBarControl中添加任意的windows组建的方法[转] Link: http://www.cnblogs.com/mymhj/archive/2012/10/12/27 ...

  8. element-ui 的el-button组件中添加自定义颜色和图标的实现方法

    这篇文章主要介绍了element-ui 的el-button组件中添加自定义颜色和图标的实现方法,目前的解决方案是:添加一个自定义全局指令,同时在element-ui源码中,加入对应的组件.需要的朋友 ...

  9. 如何在VS2010中添加ActiveX控件及使用方法

    方法1: 1.首先在在项目上面右击添加类,如下图所示: 2.点击添加ActiveX控件中的MFC类 3.找到需要添加的ActiveX类. 4.点击完成即可. 5.此时转到资源视图,打开如下视图.可能工 ...

随机推荐

  1. 路由的Resolve机制(需要了解promise)

    angular的resovle机制,实际上是应用了promise,在进入特定的路由之前给我们一个做预处理的机会 1.在进入这个路由之前先懒加载对应的 .js $stateProvider .state ...

  2. Laravel Composer and ServiceProvider

    Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...

  3. 23种设计模式--工厂模式-Factory Pattern

    一.工厂模式的介绍       工厂模式让我们相到的就是工厂,那么生活中的工厂是生产产品的,在代码中的工厂是生产实例的,在直白一点就是生产实例的类,代码中我们常用new关键字,那么这个new出来的实例 ...

  4. AES加密

    package com.edu.hpu; import java.math.BigInteger; import java.security.MessageDigest; import java.se ...

  5. ASP.NET Core的路由[5]:内联路由约束的检验

    当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ...

  6. 深入学习jQuery自定义插件

    原文地址:jQuery自定义插件学习 1.定义插件的方法 对象级别的插件扩展,即为jQuery类的实例增加方法, 调用:$(选择器).函数名(参数);      $(‘#id’).myPlugin(o ...

  7. UVA-146 ID Codes

    It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In order to exerc ...

  8. bzoj3037--贪心

    题目大意: applepi手里有一本书<创世纪>,里面记录了这样一个故事--上帝手中有着N 种被称作"世界元素"的东西,现在他要把它们中的一部分投放到一个新的空间中去以 ...

  9. MSYS2——Windows平台下模拟linux环境的搭建

    最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...

  10. WebLogic的安装和配置以及MyEclipse中配置WebLogic

    WebLogic 中间件: 是基础软件的一大类,属于可复用软件的范畴,顾名思义,中间件属于操作系统软件与应用软件的中间,比如:JDK,框架,weblogic. weblogic与tomcat区别 : ...