最近有一项目:
一超市管理系统单机版,运行在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支持通过CLR(Common Language Runtime)集成来调用.NET ...
在.NET开发环境中,C#与SQL Server数据库的交互是常见的任务。这个压缩包"**C# SQL Server数据库操作DLL**"提供了一种便捷的方式,通过一个动态链接库(DLL)来处理这些操作,免去了手动编写大量基础数据库访问代码...
- 调用存储过程:最后,通过执行这个存储过程,实现在SQL Server中调用C# dll库的功能。 6. 安全性与性能考虑:调用外部dll库可能带来安全风险,比如dll注入攻击,因此需要谨慎控制权限。此外,虽然CLR集成通常比...
### SQL Server 存储过程中调用 WebService 的实现方法 #### 一、引言 在企业级应用开发中,Web Service 作为一种标准的接口技术,被广泛用于不同平台之间的服务交互。而在 SQL Server 数据库中直接调用 Web ...
调用Web Service在SQL Server中主要通过两种方式实现:T-SQL的XML方法和使用.NET Framework的存储过程。 1. **T-SQL的XML方法**: 使用T-SQL的内置函数如`OPENXML`、`sp_xml_preparedocument`和`sp_xml_...
通过文字讲解+示例代码+图片 一步步教会你如何在sql server中执行自定义的dll 调试环境 c#(vs08) sql2000 win2003 学会这个之后,用vs6.0写的COM也是一样调用的 原文可以在网上搜索"SQL Server 调用C#。net写的Dll ...
标题提到的"C#使用server执行SQL脚本所需DLL"主要指的是C#程序中调用SQL Server的管理对象(SMO,SQL Server Management Objects)来执行SQL脚本。下面将详细介绍这一技术及其背后的原理。 SMO是Microsoft提供的一...
在.NET框架下,C#可以使用`System.Reflection`命名空间的类,如`Assembly`和`Type`,来动态加载和调用DLL中的方法。这种方法允许程序在运行时决定要执行哪个特定的DLL功能,增强了代码的灵活性。 1. **加载DLL**:...
本文将介绍如何在SQL Server中调用用C#编写的类和方法,从而实现对数据的特定处理。 首先,了解.NET程序集在SQL Server中的作用是至关重要的。.NET程序集本质上是包含.NET代码的二进制文件,这些文件可以被SQL ...
以下是一个简单的示例,演示如何在C#代码中使用`Microsoft.SQLServer.ManagedDTS.dll` 来执行一个已存在的SSIS包: ```csharp using System; using Microsoft.SqlServer.Dts.Runtime; namespace ...
在IT领域,特别是软件开发与部署过程中,将C#桌面应用程序和SQL Server数据库进行有效打包是确保应用稳定性和用户友好性的关键步骤。本文将详细解析这一过程中的核心知识点,包括但不限于利用Visual Studio .NET环境...
本部分是dll程序集,在C#.NET的项目中添加对该文件的引用, 使用时直接按照.net中sqlbulkcopy的使用方法调用执行就可以,很方便,没有什么特别的。所以,这是z项目人员,把整个库称为Extension扩展库的原因。 少赚点...
2. `EntityFramework.SqlServer.xml`:这是一个XML文档,通常包含了DLL中的元数据,包括类、方法、属性等的注释。这对于开发者理解和使用DLL中的API非常有帮助,IDE(如Visual Studio)可以在代码提示中显示这些注解...
使用DLL时,需要使用`using`语句导入DLL中包含的命名空间,以便能正确地调用其中的类和方法。 7. **延迟绑定与强类型引用** C#支持两种引用方式:静态(强类型)和动态(弱类型)。静态引用在编译时进行检查,而...
现在,你已经成功地在SQL Server中集成了C#代码,可以通过SQL语句调用`ClrAddNumbers`存储过程来执行C#函数。 通过这种方式,你可以利用C#的强大功能,比如处理复杂数据类型、加密、XML操作、正则表达式等,来增强...
介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地...
再者,**C#与SQL联合**意味着在C#应用中执行复杂的数据库操作,如数据验证、事务处理、存储过程调用、数据更新和删除。这可能涉及到了解如何在C#中编写SQL语句,以及如何通过SqlCommand对象执行这些语句。通过这种...
对于字符串类型的聚合,我们需要创建一个聚合UDF,通常使用CLR(公共语言运行库)集成,这是SQL Server 2005引入的一个特性,允许使用.NET Framework(包括C#)编写的代码直接在SQL Server中执行。 创建自定义聚合...
因此,为了在SQL Server中实现类似的功能,我们需要依赖一些额外的工具或方法,如使用CLR(公共语言运行时)存储过程。 `SqlServer GroupConcat`的CLR实现是为了解决SQL Server中缺乏类似MySQL `GROUP_CONCAT`功能...