首頁 > 資料庫 > mysql教程 > SQLSERVER环境下调用包含webservice引用的.net类库

SQLSERVER环境下调用包含webservice引用的.net类库

WBOY
發布: 2016-06-07 15:46:10
原創
1251 人瀏覽過

欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 最近做到一个项目,涉及到系统的集成。对于SSO单点登陆已经解决,但紧接着一个难点便是两个系统中基础数据的同步。项目情况大致如下: 系统AB都是采用SQLSERVER 2005 数据库的B/S系统。系统A的数据

欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入

  最近做到一个项目,涉及到系统的集成。对于SSO单点登陆已经解决,但紧接着一个难点便是两个系统中基础数据的同步。项目情况大致如下:

  系统AB都是采用SQLSERVER 2005 数据库的B/S系统。系统A的数据库中数据未加密,系统B的数据库中数据为加密数据,且因商业合同关系,不能对B数据库进行任何直接操作。系统B提供有相应的webservice,可以用来同步基础数据。

  为了解决这个问题,初步想法是将自动同步交给数据库来完成,小批量的数据修改、添加使用触发器,大量的修改、添加使用中间表和作业调度。

  但这样做的难点就是如果调用webservice。在网上粗略浏览了一下资料,基本上是SQLSERVER调用类库的思路,这个和我之前做的一个数据加密项目类似,唯一不同的是以前的类库中没有webservice。

  既然思路是对的,那么就开始动手。

  1、先是利用VS2005创建了一个类库解决方案

  2、引用要用到的webservice

  3、在类文件中建立UserSynchronization和DepSynchronization类,分别用于同步用户和部门机构。

  为了方便数据库调用,两个类的方法均为static,且每个类只提供一个主调用方法。以DepSynchronization类为例,供数据库调用的方法如下:

  4、编译类库,在release下,生成了四个文件,其中有两个是DLL文件。

  5、数据库中注册类,并映射调用函数。

  在映射函数时出了一个问题,起初我将数据库函数的参数类型设为了varchar,引发了SQL-CLR类型不匹配,原来在C#中的string类型映射过来应该是nvarchar。另外提一下,bool映射到SQLSERVER2005应该是bit。

  6、测试:

  select dbo.SeeyonOperateDepart('Creater','service-admin','19840511suzhou','TEST2014','测试部门');

  系统报错:

  搜索相关资料后发现,编译时生成的另一个DLL文件,***.XmlSerializers.dll,是用来序列化和反序列化webservice引用的,必须注册到SQLSERVER。在可编程性-程序集中右键-新建程序集,将这个类注册。

  7、再次测试OK

SQLSERVER环境下调用包含webservice引用的.net类库

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板