开发者社区> niunan> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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:TestLibsMSSQLExtMethod.RegexMSSQLExtMethod.RegexbinDebugMSSQLExtMethod.Regex.dll' with permission_set = SAFE

exec sp_configure 'clr enabled',1
RECONFIGURE

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

create function [dbo].Regex.Replace,@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,@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 = '^(13456789)[0-9]{4}([0-9]{4})$'
,@input = '13912345678'
,@replace = '$1****$2'

select @regex2='13456789{6}'
,@input2='13100000000,13922222222'

select dbo.Regex.Replace
select dbo.Regex.Math
select dbo.Regex.IsMath

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

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

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

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sql server 2012远程链接的方法及步骤
sql server 2012远程链接的方法及步骤
0 0
php链接sqlserver的四种方法
php链接sqlserver四种方法分别是mssql、pdo-mssql、sqlsrv-pdo、sqlsrv 对应php.ini的以下4个,去掉前面的分号注释后可能需要相关的驱动文件。
0 0
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(3)
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(3)
0 0
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(2)
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(2)
0 0
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(1)
Sqlserver高版本还原到低版本方法(Sqlserver2012到SqlServer2008 R2)(1)
0 0
mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享
原文:mssql sqlserver 将字段null(空值)值替换为指定值的三种方法分享 摘要: 下文将分享三种将字段中null值替换为指定值的方法分享,如下所示: 实验环境:sqlserver 2008 R2 create table test(keyId int identity,...
886 0
mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
原文:mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享 原文地址:http://www.maomao365.com/?p=7335   摘要:      数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使...
689 0
mssql sqlserver 判断字符串大小写的方法分享
原文:mssql sqlserver 判断字符串大小写的方法分享 摘要:下文讲述使用sql脚本的方法判断字符串为大小写的方法分享,如下所示 实验环境:sqlserver 2008 R2 实现思路: 将字符串转换为大写或小写然后转换为二进制编码, 然后和源字符串做对比。
957 0
mssql sqlserver 批量删除所有存储过程的方法分享
原文:mssql sqlserver 批量删除所有存储过程的方法分享 转自:http://www.maomao365.com/?p=6864 摘要: 下文讲述采用sql脚本批量删除所有存储过程的方法,如下所示: 实验环境:sqlserver 2008 R2 平常使用sql脚本,删除...
570 0
项目中调试SQLServer 方便的查看SQL语句的执行时间的方法
原文:项目中调试SQLServer 方便的查看SQL语句的执行时间的方法 第一种方法,先记录执行前的时间,然后在记录执行Sql后的时间,然后做减法 第一种方法: declare @begin_date datetime declare @end_date datetime select...
879 0
+关注
niunan
没有什么网站是数据库增删查改做不了的,如果有,那就不接这单!
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server 2017
立即下载
PostgresChina2018_董红禹_SQL_Server迁移PG经验分享
立即下载
SQL Server在电子商务中的应用与实践
立即下载