上一篇:通过CLR同步SQL Server和Sharepoint List数据(三)
写在前面
本系列文章一共分为四部分:
1. CLR概述。
2. 在Visual Studio中进行CLR集成编程并部署到SQL Server,包括存储过程、触发器、自定义函数、自定义类型和聚合。
3. CLR集成编程的调试和所遇到的问题。
4. 利用CLR同步SQL Server表和Sharepoint List(来源于实际项目应用)。
本系列文章建立在以下软件环境的基础上:
Windows Server 2003 Enterprise Edition Service Pack 2
Microsoft Visual Studio Team System 2008
Microsoft SQL Server 2008
Microsoft Office Sharepoint Server 2007
背景
先说说为什么要进行SQL Server和Sharepoint List的数据同步,这是一个实际项目的应用。
客户的Sharepoint站点上拥有四个List,相互之间组成了一个具有层次结构的Organization数据,该数据最终来源于由另外一个系统所使用的数据库中的一个表。在项目的前期,开发人员手动从数据库中将数据导出来,然后导入到Sharepoint站点已创建好的List中;项目的后期,源数据库中的数据发生了变化,于是开发人员需要手动检查这些数据的变化,并同步到Sharepoint List中。因为数据量比较大,这项工作很耗费人力和精力,于是,我们打算在SQL Server中编写一个存储过程,并添加到SQL Server的计划任务中,让SQL Server在一个周期中自动去同步这些数据。因为涉及到Sharepoint站点和List的访问以及权限的控制,我们想到了在SQL Server中使用CLR方法来编写存储过程并进行部署。以下是这四个List的结构和数据源的截图。
Area List
两个text类型的字段,Title和Area_Code,Title是Area的名称,Area_Code是Area的地区编码。
附件: 1.jpg
Region List
Title:text类型,Region的名称。
Area:Loopup类型,指向Area的ID。
Region_Code:text类型,Region的编码。
附件: 2.jpg
Country List
Title:text类型,Country的名称。
Region:Lookup类型,指向Region的ID。
Country_Code:text类型,Country的编码。
附件: 3.jpg
CompanyCode List
CompanyName:text类型,Company的名称。
CompanyCode:Company的编码。
Country:Lookup类型,指向Country的ID。
附件: 4.jpg
数据库中的源表
将层次关系组合在一个表中,Area_Code和Area_Name对应Area List,Region_Code和RegionName对应Region List,SubRegion_Code和SubRegion_Name对应Country List,Company_Code和Company_Name对应CompanyCode List。
附件: 5.jpg