通过CL汉兰达同步SQL Server和Sharepoint List数据(一)

写在前头

    本体系文章一共分成四局地:

        1. CLR概述。

        2. 在Visual Studio中开始展览CL君越集成编制程序并配置到SQL
Server,包涵仓库储存进程、触发器、自定义函数、自定义类型和聚集。

        3. CLTucson集成编制程序的调节和所碰着的标题。

        4. 采纳CL奥迪Q7同步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

 

前言

    CLLX570(Common Language
Runtime)公共语言运维时是Microsoft在.NET出来以往创设出来的1个概念,它是.NET架构中最紧要的组成都部队分,为全体.NET
Framework代码提供执行环境。在CL奥德赛后运维的代码称为托管代码。CLPAJERO提供执行顺序所需的种种函数和劳动,包涵实时(JIT)编写翻译、分配和治本内部存款和储蓄器、强制类型安全、极度处理、线程管理和安全性等。相信读者已经在其余一本介绍.NET的书中对它进行了摸底,并且深知CLXC90的劳作规律。本文要介绍的不仅仅是.NET架构中的CLPAJERO,越多的则是关于CLXC60的合并编制程序。事实上,Microsoft在集体语言运维时(CLKuga)集成编制程序上早已做了广大备选了,以至于用户未来得以用.NET的别样一种语言将协调编辑好的效益安排在微软的其余一款产品上(只怕某些言过其实了),例如SQL
Server、Office产品等,本文正是针对CLLacrosse在SQL
Server上的接纳实行介绍。有关CLCRUISER在别的产品上的使用,作者将在任何体系小说中再做牵线(如VSTO等)。

    从SQL Server
2007上马,Microsoft就曾经在里面集成了公共语言运维时(CL汉兰达)组件,只不过当时的运用或许还不太宽广(或者小编当时还并不曾怎么据书上说),使用的用户不多。然而,那也就意味着用户已经能够使用.NET的其余一种语言(如VB.NET和C#.NET等)来为数据库编写存储进程、触发器、用户定义类型、用户定义函数、用户定义聚合和流式表函数等等数据库对象了。这么些消息听起来的确令人很兴奋,那让这几个许多年来都格外保守的DBA、DEV(数据库开发人士)们有了愈来愈多的选项,同时也让众多一味的SDE(软件开发职员)能够尝尝数据库开发,从而让程序和后台的数据库结合得特别紧凑,开发人员之间的合作越发顺风。

 

集体语言运营时(CLXC90)集成概述

    Microsoft SQL Server已经拥有了与.NET
Framework的公家语言运转时(CL奇骏)组件集成的效应。CLMurano为托管代码提供劳动,例如跨语言集成、代码访问安全性、对象生存期管理以及调节和剖析帮衬,它装有以下部分特征:

  • 更好的编制程序模型。.NET Framework语言在重重上边都比
    Transact-SQL足够,它为SQL
    Server开发人士提供了以前从未的布局和成效。开发职员还足以选择 .NET
    Framework 库的效劳,它提供了大气可用来快捷有效地缓解编制程序难点的类。
  • 创新了哈密和安全性。托管代码在数据库引擎承载的公共语言运维时环境中运转。SQL
    Server利用这一特点为在 SQL Server
    早期版本中提供的扩充存款和储蓄进程提供更安全更可信的替代形式。
  • 能够定义数据类型和聚合函数
    用户定义类型和用户定义聚合是七个新的托管数据库对象,那多少个目的扩充了SQL
    Server的蕴藏和询问功用。
  • 透过标准环境简化了开发。数据库开发集成到以后版本的Microsoft
    Visual Studio
    .NET开发条件中。开发人士在开发和调节和测试数据库对象湖剧本时所选拔的工具与她们编写中间层或客户端层的
    .NET Framework组件和服务时所利用的工具相同。
  • ACCESS,持有革新质量和可扩大性的潜力。在当先四分之二景观下,.NET
    Framework语言编写翻译和施行模型通过Transact-SQL进步品质。

    托管代码应用代码访问安全性(CAS)来使程序集不可能实施有些操作。SQL
Server使用CAS来扶助维护托管代码,并阻止对操作系统或数据库服务器的迫害。

CL奇骏集成的帮助和益处

   
Transact-SQL是为着在数据库中一直开始展览数据访问和操纵而特意陈设的。即便Transact-SQL在数码访问和管理方面表现很好,但它不是完好的编制程序语言。例如,Transact-SQL不帮忙数组、集合、for-each循环、移位或类。尽管能够在Transact-SQL中效仿某个那样的结构,但托管代码已经济合营龙了对这么些组织的支撑。依照具体情况,那个效能足以为在托管代码中贯彻有些数据库效率提供丰硕理由。

选择Transact-SQL依然托管代码

   
倘若代码首要实施没有或唯有很少进程逻辑的数额访问,请使用Transact-SQL。如若要编写制定有盘根错节逻辑并且CPU占用量大的函数和进程,只怕想使用.NET
Framework的BCL,则应用托管代码。

慎选在服务器中推行或许在客户端中履行

   
影响使用Transact-SQL照旧托管代码的另3个元素是您想将代码驻留在服务器总计机上,依旧在客户端计算机上。Transact-SQL和托管代码都得以在服务器上运维。这种办法可以将代码和数目靠近放在一块儿,并同意你使用服务器的兵不血刃处理能力。另一方面,您只怕希望防止将微型总计机占用量大的任务放在数据库服务器上。最近多数客户端总括机都有不行强劲的功力,因而你只怕希望因而将尽量多的代码放在客户端上,来行使那种拍卖能力。托管代码可以在客户端计算机上运维,而Transact-SQL不可能。

慎选增加存款和储蓄进程可能托管代码

   
能够生成扩张存款和储蓄进度来执行使用Transact-SQL存款和储蓄进度无法完毕的遵循。但是,扩大存款和储蓄进程或然有损于SQL
Server进程的完整性,而透过认证明显为项目安全的托管代码则不会。进一步来说,在CL途锐的托管代码与SQL
Server之间更深远地融会了内部存款和储蓄器管理、线程及纤程的调度以及协同服务。倘若所编写的积存进度必要实践在Transact-SQL中不容许完毕的天职,则CL福特Explorer集成有比扩展存储进度更安全的方法来兑现它。

 

集体语言运转时(CLLAND)集成质量

    未来开发人士能够自由选拔Transact-SQL或然CLSportage进行SQL
Server数据库开发,然而两岸在性质方面各有利害,针对于不一致种类的演算和数据库对象,下表给出了两者之间的区分。

类型

Transact_SQL

CLR

用户定义函数 执行数据访问时更有效。 适用于过程代码、计算和字符串操作以及需要大量计算和不执行数据访问的部分。
用户定义聚合 非基于游标的本机内置聚合函数的性能高于CLR方式。 性能高于基于游标的聚合,但执行速度较慢。
流式表值函数(TVF函数)

托管TVF的性能优于可比扩展存储过程实现的性能,它返回IEnumerable接口的托管函数。
数组与游标 游标的性能低于CLR中的数组 当Transact-SQL游标必须遍历更容易表示为数组的数据时,使用托管代码可以显著提高性能。
字符串数据 char或varchar数据类型。 托管函数中可以是SqlString或 SqlChars类型。
扩展存储过程 无法查看或控制扩展存储过程的资源使用情况。 可以使用托管代码对给定的线程进行检测。

 

集体语言运维时(CL揽胜极光)集成安全性

    与.NET Framework公共语言运转时 (CLPRADO) 集成的SQL
Server的安全情势用于管理和掩护SQL
Server内运行的例外档次CL宝马X3对象和非CL讴歌MDX对象时期的访问。这几个目标大概由Transact-SQL语句或服务器上运行的其余CLSportage对象调用。对象时期的调用称为链接。对那么些目的实施的广安检查项目取决于相关的链接类型。CL索罗德集成安全方式可实现以下目标:

  • 默许情状下,在SQL Server中运作托管用户代码不该损害SQL
    Server的完整性和平静。假若履行有可能挫伤 SQL
    Server可信赖性的操作,则应当受到适当的高等级权限的保证。
  • 托管用户代码不应当取得对数据库中用户数据或其他用户代码的未经授权访问。用户定义代码应当在调用该代码的用户会话的广元上下文中运维,且独具该安全上下文的科学特权。
  • 有道是有控制来限制用户代码不得访问服务器以外的其余能源,而不得不用来地点数据访问和测算。
  • 用户定义代码不应能经过在SQL
    Server进度中运营而收获对系统财富的未经授权访问。

    SQL Server已经济合营龙了SQL
Server基于用户的安全模式和CLCRUISER基于代码访问的平安情势。SQL
Server主机策略级别授予程序集的代码访问安全性权限集由创设该程序集时内定的权位集决定。有八个权力集:SAFE、EXTE中华VNAL_ACCESS和UNSAFE。

SAFE 最具限制性的权限集,只允许内部计算和本地数据访问,无法访问外部系统资源,如文件、网络、环境变量或注册表。并且只能使用上下文连接字符串指定数据库连接,即context connection=true或context connection=yes。
EXTERNAL_ACCESS 与SAFE具有相同的权限,但允许访问外部系统资源。
UNSAFE 允许程序集不受限制地访问SQL Server内部和外部的资源,此时程序集被授予FullTrust。

    一般景色下,在不选拔SQL
Server外部系统能源时提出利用SAFE格局的程序集,如若在程序集中供给拜访外部系统能源,推荐使用EXTECRUISERNAL_ACCESS,而不是UNSAFE,后者将同意程序集中的代码对SQL
Server进度空间进行非法操作,可能会损害SQL
Server的健壮性和可信赖性。EXTE奥迪Q5NAL_ACCESS程序集私下认可情形下将以SQL
Server的脚下劳动账户运营,它能够显示模拟调用方的Windows身份验证安全上下文,那也等于自个儿在末端使用SQL
CLEscort连接Sharepoint List时为何要将顺序集设置为EXTE翼虎NAL_ACCESS!

 

结语

    总而言之,公共语言运转时(CLRubicon)为使用C# Custom程序集连接SQL
Server和外部能源(诸如Sharepoint List、互连网财富、文件系统等),以及SQL
Server本身数据运算提供了优质的基础和更好的便利性。在下一篇小说中本身将介绍怎么着在SQL
Server 二〇〇八中打开CLMurano并编写CLEnclave使之在SQL
Server中打响运营,个中恐怕会碰着重重小的难点,到时笔者会一一给出化解办法。

1 2 3 4

相关文章