`
niunan
  • 浏览: 721008 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

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

    博客分类:
  • .NET
 
阅读更多

最近有一项目:

 一超市管理系统单机版,运行在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

 

分享到:
评论

相关推荐

    SqlServer调用C#DLL的方法

    ### SqlServer调用C#DLL的方法 在现代数据库系统中,为了提高性能和实现复杂的业务逻辑,有时需要在数据库内部直接执行用高级编程语言编写的代码。SqlServer支持通过CLR(Common Language Runtime)集成来调用.NET ...

    C# SQL Server数据库操作DLL

    在.NET开发环境中,C#与SQL Server数据库的交互是常见的任务。这个压缩包"**C# SQL Server数据库操作DLL**"提供了一种便捷的方式,通过一个动态链接库(DLL)来处理这些操作,免去了手动编写大量基础数据库访问代码...

    SQL数据库调用C#dll库

    - 调用存储过程:最后,通过执行这个存储过程,实现在SQL Server中调用C# dll库的功能。 6. 安全性与性能考虑:调用外部dll库可能带来安全风险,比如dll注入攻击,因此需要谨慎控制权限。此外,虽然CLR集成通常比...

    SQLServer存储过程调用WebService

    ### SQL Server 存储过程中调用 WebService 的实现方法 #### 一、引言 在企业级应用开发中,Web Service 作为一种标准的接口技术,被广泛用于不同平台之间的服务交互。而在 SQL Server 数据库中直接调用 Web ...

    SQL Server调用Webservice示例

    调用Web Service在SQL Server中主要通过两种方式实现:T-SQL的XML方法和使用.NET Framework的存储过程。 1. **T-SQL的XML方法**: 使用T-SQL的内置函数如`OPENXML`、`sp_xml_preparedocument`和`sp_xml_...

    sql调用自己写的dll

    通过文字讲解+示例代码+图片 一步步教会你如何在sql server中执行自定义的dll 调试环境 c#(vs08) sql2000 win2003 学会这个之后,用vs6.0写的COM也是一样调用的 原文可以在网上搜索"SQL Server 调用C#。net写的Dll ...

    C#使用server执行SQL脚本所需DLL

    标题提到的"C#使用server执行SQL脚本所需DLL"主要指的是C#程序中调用SQL Server的管理对象(SMO,SQL Server Management Objects)来执行SQL脚本。下面将详细介绍这一技术及其背后的原理。 SMO是Microsoft提供的一...

    bartender 10.0 C#动态调用DLL

    在.NET框架下,C#可以使用`System.Reflection`命名空间的类,如`Assembly`和`Type`,来动态加载和调用DLL中的方法。这种方法允许程序在运行时决定要执行哪个特定的DLL功能,增强了代码的灵活性。 1. **加载DLL**:...

    SQL Server中调用C#类中的方法实例(使用.NET程序集)

    本文将介绍如何在SQL Server中调用用C#编写的类和方法,从而实现对数据的特定处理。 首先,了解.NET程序集在SQL Server中的作用是至关重要的。.NET程序集本质上是包含.NET代码的二进制文件,这些文件可以被SQL ...

    Microsoft.SQLServer.ManagedDTS.dll文件

    以下是一个简单的示例,演示如何在C#代码中使用`Microsoft.SQLServer.ManagedDTS.dll` 来执行一个已存在的SSIS包: ```csharp using System; using Microsoft.SqlServer.Dts.Runtime; namespace ...

    C#桌面程序和数据库SQL Server打包方法

    在IT领域,特别是软件开发与部署过程中,将C#桌面应用程序和SQL Server数据库进行有效打包是确保应用稳定性和用户友好性的关键步骤。本文将详细解析这一过程中的核心知识点,包括但不限于利用Visual Studio .NET环境...

    .SqlBulkCopy.Extension第三方批量复制插入sqlServer数据库的dll程序集(支持批量数据合并插入)

    本部分是dll程序集,在C#.NET的项目中添加对该文件的引用, 使用时直接按照.net中sqlbulkcopy的使用方法调用执行就可以,很方便,没有什么特别的。所以,这是z项目人员,把整个库称为Extension扩展库的原因。 少赚点...

    EntityFramework.SqlServer_EntityFramework_

    2. `EntityFramework.SqlServer.xml`:这是一个XML文档,通常包含了DLL中的元数据,包括类、方法、属性等的注释。这对于开发者理解和使用DLL中的API非常有帮助,IDE(如Visual Studio)可以在代码提示中显示这些注解...

    C# 生成DLL文件

    使用DLL时,需要使用`using`语句导入DLL中包含的命名空间,以便能正确地调用其中的类和方法。 7. **延迟绑定与强类型引用** C#支持两种引用方式:静态(强类型)和动态(弱类型)。静态引用在编译时进行检查,而...

    利用C#新建sql server 项目和CLR集成的使用

    现在,你已经成功地在SQL Server中集成了C#代码,可以通过SQL语句调用`ClrAddNumbers`存储过程来执行C#函数。 通过这种方式,你可以利用C#的强大功能,比如处理复杂数据类型、加密、XML操作、正则表达式等,来增强...

    在SQL Server中使用CLR调用.NET方法实现思路

    介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地...

    csharp+sql.rar_SQL与C#联合_c#调用sql_c#调用动态库_csharp 动态库_动态库

    再者,**C#与SQL联合**意味着在C#应用中执行复杂的数据库操作,如数据验证、事务处理、存储过程调用、数据更新和删除。这可能涉及到了解如何在C#中编写SQL语句,以及如何通过SqlCommand对象执行这些语句。通过这种...

    SQL格式化功能(C#代码)

    在实际应用中,用户可以通过调用这个类的某个方法,传入未格式化的SQL字符串,得到返回的格式化后的字符串。 总的来说,这个C#实现的SQL格式化功能对于.NET开发者来说是一个实用的工具,它能够提高SQL代码的可读性...

    C#扩展SQLServer 2005 字符串聚合函数

    对于字符串类型的聚合,我们需要创建一个聚合UDF,通常使用CLR(公共语言运行库)集成,这是SQL Server 2005引入的一个特性,允许使用.NET Framework(包括C#)编写的代码直接在SQL Server中执行。 创建自定义聚合...

Global site tag (gtag.js) - Google Analytics