sql server中调用c#写的dll里的方法

最近有一项目:

一超市管理系统单机版,运行在WIN2003+SQL2005上,每天超市关门都都会关电脑,现客户要新加功能,每天关门下班后回家可以上网查看超市管理系统的数据库里的相关数据,然后再做一些原系统没有的统计分析等,老系统不能做大改动,像升级到WIN2012+SQL2012等这些操作,改动越小越好。

现在的想法是:阿里云买台服务器,装上SQL,然后建立的数据库和超市管理系统上的数据库一毛一样,然后想办法,当超市管理系统数据库里的增表增删改的时候,同步阿里云服务器上的数据库保持数据一致,

然后剩下的就是做自己的网站连接阿里云上的数据库做统计分析就好了

上网到处问网友,以前的技术经理给了如下方案:

using System.Text.RegularExpressions;

namespace MSSQLExtMethod
{
    public class RegexExtends
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static bool IsMath(string input, string patten)
        {
            return !string.IsNullOrEmpty(input) && new Regex(patten).IsMatch(input);
        }
        [Microsoft.SqlServer.Server.SqlFunction]
        public static string Math(string input, string patten)
        {
            return string.IsNullOrEmpty(input) ? "" : new Regex(patten).Match(input).Value;
        }
        [Microsoft.SqlServer.Server.SqlFunction]
        public static string Replace(string input, string patten, string replace)
        {
            return string.IsNullOrEmpty(input) ? "" : new Regex(patten).Replace(input, replace);
        }
    }
}

-------------------------------------------------

create assembly Regex from
‘E:\Test\Libs\MSSQLExtMethod.Regex\MSSQLExtMethod.Regex\bin\Debug\MSSQLExtMethod.Regex.dll‘
with permission_set = SAFE

exec sp_configure ‘clr enabled‘,1
RECONFIGURE

create function [dbo].[Regex.Math](@Input nvarchar(max),@Regex nvarchar(max))
returns nvarchar(max) with execute as caller
as
external NAME [Regex].[MSSQLExtMethod.RegexExtends].[Math]
go

create function [dbo].[Regex.Replace](@Input nvarchar(max),@Regex nvarchar(max),@Replace nvarchar(max))
returns nvarchar(max) with execute as caller
as
external NAME [Regex].[MSSQLExtMethod.RegexExtends].[Replace]
go

create function [dbo].[Regex.IsMath](@Input nvarchar(max),@Regex nvarchar(max))
returns bit with execute as caller
as
external NAME [Regex].[MSSQLExtMethod.RegexExtends].[IsMath]
go

------------------------------------------------------------------

declare
    @regex nvarchar(500)
    ,@replace nvarchar(500)
    ,@input nvarchar(500)
    ,@regex2 nvarchar(500)
    ,@input2 nvarchar(500)

select @regex = ‘^(1[3456789][0-9])[0-9]{4}([0-9]{4})$‘
,@input = ‘13912345678‘
,@replace = ‘$1****$2‘

select @regex2=‘1[3456789][0-9]{6}‘
,@input2=‘13100000000,13922222222‘

select dbo.[Regex.Replace](@input,@regex,@replace)
select dbo.[Regex.Math](@input2,@regex2)
select dbo.[Regex.IsMath](@input2,@regex2)

第一块代码,.net 类库,第二块代码类库注册到 MSSQL 中形成函数,第三块代码调用实例

今天自己测试了一下,发现只有.NET 2.0的DLL才可以,开始我是.NET 4.0的,总是报那个什么什么权限错误之类的。。

这样只要在SQL2005的表中加个触发器,有数据变动的时候就调用DLL里的方法访问远程接口进行增删改远程数据库就好了

另SQL非免费版里好像有个‘镜像’功能,和一个‘复制’功能,不知道能不能用,没有学过的。。。

自己在VS2W017中做的.NET 2.0的DLL示例方法的源码:

http://ohpxbzczu.bkt.clouddn.com/SQL2005ExecDLLDemo.zip

原文地址:https://www.cnblogs.com/niunan/p/8277896.html

时间: 2024-12-08 21:09:15

sql server中调用c#写的dll里的方法的相关文章

在Sql Server中调用外部EXE执行程序

exe sql server xp database dos 服务器 一.先开启xp_cmdshell 打开外围应用配置器—> 功能的外围应用配置器—> 实例名\Database Engine\xp_cmdshell—> 启用 二.解决方法 [sql] view plain copy use master Exec xp_cmdshell 'mkdir d:\csj' --调用dos命令创建文件夹,(执行成功了!) [sql] view plain copy Exec xp_cmdshe

SQL Server中调用WebService的实例

尊重原著作:本文转载自http://www.cnblogs.com/icycore/p/3532197.html 1.Ole Automation Procedures 服务器配置选项 当启用 OLE Automation Procedures 时,对 sp_OACreate 的调用将会启动 OLE 共享执行环境. 可以使用 sp_configure 系统存储过程来查看和更改 Ole Automation Procedures 选项的当前值. sp_configure 'show advance

sql server存储过程调用C#编写的DLL文件

新建C#类库,编译. 添加引用 using Microsoft.SqlServer.Server; 方法 [SqlFunction] public static int GenerateTxt() { ...... } 修改数据库配置 ---修改配置 exec sp_configure 'clr enabled', 1; reconfigure; 根据dll路径注册程序集 --从dll中抽取中间语言(IL) USE erp303_szzb_szpa CREATE ASSEMBLY Custome

发现个delphi调用vc写的Dll中包含pchar参数报错奇怪现象

发现个delphi调用vc写的Dll中包含pchar参数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会运行错,在之前任意加上条语句就不报错了奇怪! vc的DLL源码地址 http://blog.csdn.net/lqena/article/details/46357165 Delphi源码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co

Unity中C#调用C++写的DLL之Swig篇

hash索引btree索引聚簇索引非聚簇索引 安装AndroidSDK的一些坑与注意点 近来要用Unity打包到安卓上玩, Unity那边需要用到服务器中用C++写的库,对比了 P/Invoke 和 C++/CLI 两种方式, 都不够省心省力, 决定使用 Swig来撸. 教程基本上按照这篇文章就可以, 文章写得非常详尽, 但文中关于设置 swiglib.i 自定义生成工具的命令行的时候, 他文中的下面一段要注意 : 在常规中选择命令行并且写入: echo on $(SolutionDir)/..

在SQL server中如何写存储过程

总结一下SQL server中如何存储. USE [SSQADM]   ----Use 是跳转到哪个数据库,对这个数据库进行操作. GO        ----GO向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号,相当于提交上面的SQL语句. ----GO是把t-sql语句分批次执行.(一步成功了才会执行下一步,即一步一个GO) /****** Object:  StoredProcedure [dbo].[PROC_four_five_hr]    Scri

ASP.NET用SQL Server中的数据来生成JSON字符串

原文引自:  作者: 缺水的海豚  来源: 博客园  发布时间: 2010-09-21 21:47  阅读: 6136 次  推荐: 0   原文链接   [收藏] 摘要:ExtJs用到的数据内容基本上都是JSON格式的,要和ASP.NET结合开发,需要格式化数据成JSON的东西.所以作者实现了一个生成JSON字符串的方法. 最近在学习ExtJs与ASP.NET结合开发,前者用到的数据内容基本上都是JSON格式,遂想写一个格式化数据成JSON的东东,在网上找了一下,发现还蛮多的,实现了一个类似于

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试.最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得. 首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是

十步优化SQL Server中的数据访问(转载)

原文地址:http://tech.it168.com/a2009/1125/814/000000814758.shtml 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表