<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL中国研发中心</title><link>http://blogs.msdn.com/b/sqlcrd/</link><description>微软中国研发集团服务器与开发工具事业部SQL中国研发中心的博客。</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.19431 (Build: 5.6.583.19431)</generator><item><title>扩展事件在Denali CTP3里的新UI（二）</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/11/09/denali-ctp3-ui-2.aspx</link><pubDate>Wed, 09 Nov 2011 06:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10235268</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10235268</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/11/09/denali-ctp3-ui-2.aspx#comments</comments><description>&lt;p&gt;在前面一篇博文里我们介绍了如何使用扩展事件（XEvent）在Denali CTP3里的新UI创建和修改XEvent session，本文我们将介绍如何用新UI来显示和分析数据，我们将试图找到一个workload中平均开销最大的query。&lt;/p&gt;
&lt;p&gt;在Object Explorer里右键点击前文创建的blogtest session，选择Watch Live Data，如图1所示，这将在SSMS里打开一个新的Live Data窗口，这时我们可以执行我们的workload，workload可以是应用程序的运行，也可以是一段SQL的执行，或者重播Profiler记录的SQL Trace，这里我们在SSMS的另一个窗口执行创建Northwind数据库的instnwnd.sql来模拟一个workload。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/3704.image_5F00_4ADB8CF3.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/6825.image_5F00_thumb_5F00_4FDDCAA2.png" width="335" height="380" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图1 启动Live Data窗口&lt;/p&gt;
&lt;p&gt;当instnwnd.sql执行完毕后，先前打开的Live Data窗口会出现很多行数据，这些就是blogtest session所记录的sql_statement_starting和sql_statement_completed事件，这时可以点击工具栏上的Stop Data Feed按钮（工具栏第二个按钮），这样可以避免和workload无关的事件继续被Live Data窗口显示，如图2 所示。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/8081.image_5F00_3BE4380C.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/0636.image_5F00_thumb_5F00_27123F8C.png" width="558" height="427" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图2 Live Data窗口&lt;/p&gt;
&lt;p&gt;你的Live Data窗口可能只有2个列，name和timestamp，这是仅有的2个所有扩展事件共有的列，你可以选择工具栏上的Choose Columns&amp;hellip;按钮添加/删除需要显示的列，我增加了3个列database_name，duration和statement，如图3所示。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/7802.image_5F00_56147B63.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/1220.image_5F00_thumb_5F00_1AE09F98.png" width="558" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图3 选择列&lt;/p&gt;
&lt;p&gt;我们要找到Northwind数据库里平均执行时间最长的query，首先我们可以过滤不必要的事件，前文曾提到过Predicate可以在SQL Server端避免不需要的事件被产生，我们同时也支持客户端的过滤器，这可以帮助你做各种分析。点击工具栏上的Filters&amp;hellip;按钮，这将打开Filters对话框，这里我们设置两个条件name=sql_statement_completed And database_name=Northwind，如图4所示。为了避免输入错误，你可以从事件列表里拷贝粘帖，你还可以右键点击某个Cell然后选择Filter by this Value，这将自动为你添加一个子句并And到原有条件上。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/7802.image_5F00_5FACC3CC.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/3386.image_5F00_thumb_5F00_08D45C0B.png" width="522" height="333" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图4 Filter对话框&lt;/p&gt;
&lt;p&gt;过滤掉不必要的事件后我们按照statement来做分组，点击工具栏上的Grouping&amp;hellip;按钮，把statement移动到右边，点击OK，如图5所示。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/4747.image_5F00_4DA0803F.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/4331.image_5F00_thumb_5F00_0506916E.png" width="489" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图5 Grouping对话框&lt;/p&gt;
&lt;p&gt;分组的目的是为了计算每个分组上duration的平均值，下面可以点击工具栏上的Aggregation&amp;hellip;按钮，我们在duration上选择AVG，然后选择在duration(AVG)上按降序排序，如图6所示。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/5824.image_5F00_3C6CA29C.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/7065.image_5F00_thumb_5F00_36B188F6.png" width="366" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图6 Aggregation对话框&lt;/p&gt;
&lt;p&gt;这样duration平均值最大的分组将被显示在第一行，我执行instnwnd.sql的workload里duration最大的分组是INSERT "Order Details" VALUES(10444,17,31.2,10,0)，它的duration是134206微秒，如图7所示。这样我们就找到了平均开销最大的query。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/0624.image_5F00_6E179A24.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/3252.image_5F00_thumb_5F00_320B586F.png" width="558" height="427" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图7 开销最大的query&lt;/p&gt;
&lt;p&gt;前文在创建blogtest session时增加了event_file的target，如果你打开SQL Server所在机器的Log目录（比如C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log），你会发现一堆blogtest*.xel，你可以双击任何一个文件在SSMS里打开和Live Data类似的窗口，也可以通过SSMS的File|Open|Merge Extended Event Files&amp;hellip;菜单在同一窗口里打开多个文件，后面的数据分析和Live Data窗口是一样的。&lt;/p&gt;
&lt;p&gt;软件开发工程师 徐进&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10235268" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Denali/">Denali</category></item><item><title>扩展事件在Denali CTP3里的新UI（一）</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/11/09/denali-ctp3-ui-1.aspx</link><pubDate>Wed, 09 Nov 2011 06:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10235266</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10235266</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/11/09/denali-ctp3-ui-1.aspx#comments</comments><description>&lt;p&gt;去年年底时我曾经写过一篇介绍扩展事件（XEvent）在Denali CTP1里新功能的&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2010/12/23/xevent-feature-in-sql-denali-ctp1.aspx"&gt;博文&lt;/a&gt;，在CTP1中我们提供了一个Object Model和一个简单的UI，在不久前发布的&lt;a href="http://www.microsoft.com/sqlserver/en/us/future-editions.aspx"&gt;Denali CTP3&lt;/a&gt;里我们对XEvent的UI做了更好的支持，本文将进行介绍。&lt;/p&gt;
&lt;p&gt;首先我们提供了一个功能强大的对话框用于创建/修改SQL Server里的XEvent Session，你可以在Object Explorer里右键点击Extended Events下的Sessions节点选择New Session&amp;hellip;来新建一个Session，如图1所示。这将打开新建Session对话框，这个对话框有4个页面，分别是General、Events、Data Storage （Targets）、Advanced页面，下面我们一一介绍。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/2313.image_5F00_670EC382.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/0827.image_5F00_thumb_5F00_3E23AE79.png" width="389" height="412" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图1 新建Session&lt;/p&gt;
&lt;p&gt;第一个General页面里你可以输入Session的名字，选择一些选项，比如Session是否和SQL Server一起启动，Session创建成功后是否立即启动该Session等等。我们支持与Profiler里模板类似的概念，只要选择一个模板，Event（包括Action和Predicate）和Target以及某些选项就自动选择好了，但是在CTP3里只有一个Standard模板，这个模板所选择的事件和Profiler里的Standard模板相对应。你也可以把自己创建的Session作为模板保存起来以备后用，保存模板只需要右键点击某个Session然后选择Export Session&amp;hellip;即可。这里我们输入blogtest，并选择&amp;rdquo;Start the event session immediately after session creation&amp;rdquo;让blogtest在创建成功后立即启动，如图2所示。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/1817.image_5F00_7C3CC92A.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/2577.image_5F00_thumb_5F00_5A04BDA4.png" width="558" height="396" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图2 General页面&lt;/p&gt;
&lt;p&gt;点击左边的Select a page列表里的Events切换到Events页面，这个页面是最复杂的，也是UI能够给你提供最大帮助的地方。你首先看到它分为左右两部分，左边是事件库，所有在SQL Server里注册的扩展事件都列在这里，右边是你选择的事件。在事件的选择上我们做了很多工作来帮助您：1. 你可以点击抬头排序，默认是按事件名排序；2. 可以输入关键字进行过滤，比如图3中我们输入sql_，所有名字含有sql_字样的事件都被列了出来并且高亮显示，过滤可以作用在事件名称上，也可以在事件的名称和描述上，或者事件所含的Fields上，你可以点击事件库右上方的ComboBox切换，所有的过滤都有高亮显示；3. 在Category和Channel上我们实现了和Excel类似的过滤过能，你可以点击Channel右边的下拉箭头选择只看Analytic channel的事件。&lt;/p&gt;
&lt;p&gt;找到你需要的事件后，双击它或者点击两部分中间的&amp;gt;按钮加入选择，在这里我们选择了sql_statement_starting和sql_statement_completed事件。你可能注意到了有两个小图标（闪电和漏斗）显示在已选择事件的列表中，下面会介绍。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/5618.image_5F00_1ED0E1D9.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/1805.image_5F00_thumb_5F00_406D0AAA.png" width="558" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图3 在Events页面里选择事件&lt;/p&gt;
&lt;p&gt;点击Events页面右上方的Configure按钮，页面将会滑动，事件库被隐藏，而配置事件的页面将出现，如图4所示，当然你点击Select可以回到刚才的页面。你会看到闪电和漏斗图标分别出现在了右边配置页面的Actions标签和Filter标签上，闪电代表的是该事件上有多少Global Fields（Actions）关联，漏斗代表该事件有没有Filter（Predicate）关联。&lt;/p&gt;
&lt;p&gt;Action是指在发生事件的时刻可以读取的环境数据，比如event_sequence可以为所有事件排序，Profiler里每个事件都含有EventSequence列，而在XEvent里则被作为Action来实现了。&lt;/p&gt;
&lt;p&gt;Predicate可以减少不必要的事件收集，比如我可以配置sql_statement_starting事件的Predicate为database_name=&amp;rsquo;Northwind&amp;rsquo;，那么发生在其他数据库的sql_statement_starting事件就不会被该Session所收集，Profiler可以为所有事件设置一个Column Filter，而XEvent支持为每个Event设置各自独立不同的Predicate，有兴趣可以参考MSDN里扩展事件对Action和Predicate的介绍。Event Fields标签列出所有该Event的列，某些Event会把一些开销比较大的列作为可选的列，你可以点击前面的CheckBox选择是否收集该列数据，比如sql_statement_starting的statement列就可以被取消选择。&lt;/p&gt;
&lt;p&gt;你可以同时选择多个Event并选择/取消Action或配置Filter，在这里我们为sql_statement_starting和sql_statement_completed事件选择database_name action，不添加Filter并保持Event Fields默认值。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/7268.image_5F00_52D55B5F.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/1817.image_5F00_thumb_5F00_225ED6E9.png" width="558" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图4 在Events页面里配置事件&lt;/p&gt;
&lt;p&gt;第三个页面是Data Storage页面，在这个页面里可以选择为Session添加不同的Target，这里我们选择event_file target并保持默认配置。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/7652.image_5F00_06D9D4E6.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/3630.image_5F00_thumb_5F00_3D67802A.png" width="558" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图5 Data Storage页面&lt;/p&gt;
&lt;p&gt;最后一个页面是Advanced页面，这是可以设置控制Session行为的高级选项。有一个选项需要特别注意，&amp;rdquo;Maximum dispatch latency&amp;rdquo;，它描述了事件从被触发到写入到Target最长的等待时间，默认值是30秒，如果你使用和Profiler client-side tracing类似的Live Monitoring功能，你可能会希望把它改小，这样事件被触发后可以尽快地显示在SSMS里，但需要注意到是改小它会增加SQL Server的开销，这里我们把它改成5秒。&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/1805.image_5F00_21E27E27.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59-metablogapi/6266.image_5F00_thumb_5F00_66AEA25B.png" width="558" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align="center"&gt;图6 Advanced页面&lt;/p&gt;
&lt;p&gt;点击OK，blogtest session将会被创建成功并显示在Object Explorer里，在Session被创建后，你可以在Object Explorer里右键点击该Session并选择Properties，这将打开和创建Session相同的对话框，进行修改后点击OK即可完成。&lt;/p&gt;
&lt;p&gt;右键点击blogtest选择&amp;rdquo;Watch Live Data&amp;rdquo;，这将打开前面提到的Live Monitoring功能，我们将会在后续的博文里继续介绍它。&lt;/p&gt;
&lt;p&gt;软件开发工程师 徐进&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10235266" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Denali/">Denali</category></item><item><title>利用Contained Database和DAC来开发基于SQL Server "Denali"和SQL Azure之上的应用程序</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/10/18/contained-database-dac-sql-server-denali-sql-azure.aspx</link><pubDate>Tue, 18 Oct 2011 06:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226788</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10226788</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/10/18/contained-database-dac-sql-server-denali-sql-azure.aspx#comments</comments><description>&lt;p&gt;大家好！&lt;/p&gt;
&lt;p&gt;在刚刚结束的Microsoft TechEd China 2011中，我们在分会的一个小时里为大家讲解并演示了如何利用Contained Database和DAC来开发基于SQL Server "Denali"和SQL Azure之上的应用程序。为了能够和更多的开发人员和DBA介绍和分享CDB及DAC，并提供相关资源和工具下载的链接，我们特撰文如下，希望有所帮助。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;背景&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;让应用程序的数据层可以在本地SQL Server服务器、私有云、共有云之间方便的部署、移动、升级和管理，正在迅速成为当前云时代的关键技术之一。SQL Server &amp;ldquo;Denali&amp;rdquo; 的新增功能&amp;mdash;&amp;mdash;包含的数据库Contained Database (CDB) 和数据层应用DAC正是为了满足这一需求而研发并推出的。这两项技术在一起所提供的功能，将SQL Server应用程序的开发、部署、和不同环境之间的移动完全流程化了，让开发人员和DBA能够淋漓发挥，游刃有余。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;进展&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/0434.1.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/0434.1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;亮点简述&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;包含的数据库Contained Database (CDB)：排序规则和安全认证已经可以内置在CDB中；&lt;/li&gt;
&lt;li&gt;数据层应用DAC：BACPAC既包含数据库的元信息，也包含数据；原地升级；可以防止篡改；&lt;/li&gt;
&lt;li&gt;代码名为&amp;ldquo;Juneau&amp;rdquo;的SQL Server开发工具：基于Visual Studio 2010，可以从现有数据库中提取信息新建项目；智能感知（IntelliSense）；可深层验证；版本化build；可声明目标平台，定义服务器选择策略；界面友好直观；&lt;/li&gt;
&lt;li&gt;导出导入工具：广泛支持SQL Server 2000（仅支持导出）、2005、2008、2008 R2、SQL Server Denali及SQL Azure。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6746.2.png"&gt;&lt;img border="0" alt="" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6746.2.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;相关资源及下载：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff929071(v=sql.110).aspx"&gt;微软MSDN 英文介绍 &amp;ldquo;包含的数据库&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sqlazurelabs.com/importexport.aspx"&gt;SQL数据库导入导出工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff381683(SQL.100).aspx"&gt;微软技术白皮书 英文《SQL Server 2008 R2 中的数据层应用程序》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/gg427686"&gt;SQL Server开发工具"Juneau"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.microsoft.com/forums/zh-CN/sqlserverzhchs"&gt;微软MSDN 中文 SQL Server论坛&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后，为了让更多的开发人员和DBA了解CDB及DAC，我们会在10月24日进行一个同样内容的网络直播，详细信息和注册请参考&lt;a href="http://technet.microsoft.com/zh-cn/hh506399"&gt;http://technet.microsoft.com/zh-cn/hh506399&lt;/a&gt; 。&lt;/p&gt;
&lt;p&gt;谢谢大家！&lt;/p&gt;
&lt;p&gt;微软SQL Server产品组　刘劲浩，刘春雨&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226788" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Denali/">Denali</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2012/">SQL Server 2012</category></item><item><title>SQL Server Migration Assistant简介（二）</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/06/07/sql-server-migration-assistant-2.aspx</link><pubDate>Tue, 07 Jun 2011 08:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10172019</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10172019</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/06/07/sql-server-migration-assistant-2.aspx#comments</comments><description>&lt;p&gt;在&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2011/05/31/sql-server-migration-assistant-1.aspx"&gt;前一篇博文&lt;/a&gt;里我们介绍了使用SSMA for Oracle 5.0做Oracle数据库迁移之前的评估，本文中我们将介绍如何做Schema迁移和数据迁移。&lt;/p&gt;
&lt;p&gt;首先我们需要连接目标数据库，点击工具条上的Connect to SQL Server，输入Server name，在Database里输入HR，如图1所示。如果你的SQL Server里不存在HR数据库，点击Connect后SSMA会提示错误，问你是否创建HR数据库，选择Yes。HR数据库创建后SSMA可能会提示SQL Server Agent未运行，这仅在使用服务器端数据迁移时才会用到，默认情况下我们使用的是客户端数据迁移，所以可以点击Continue忽略。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1004.SSMA01.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/449x356/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1004.SSMA01.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1 连接到SQL Server服务器&lt;/p&gt;
&lt;p&gt;连接上SQL Server服务器后我们就可以迁移Schema了，这里的Schema指数据以外的数据库定义，比如表结构、视图定义、存储过程等等。右键单击Oracle Metadata Explorer里的HR数据库，选择Convert Schema，如图2所示。SSMA运行一段时间后会在最下方的Output栏里显示转换是否有错误、警告或信息。这时你可以展开SQL Server Metadata Explorer里HR数据库的dbo schema，在Procedures文件夹下会发现ADD_JOB_HISTORY等存储过程，Tables文件夹下会发现COUNTRIES等表，说明Schema的迁移已经成功。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1778.SSMA02.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/305x318/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1778.SSMA02.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2 转换Schema&lt;/p&gt;
&lt;p&gt;如果这时你使用SQL Server客户端工具SQL Server Management Studio或者Visual Studio的Server Explorer查看SQL Server上的HR数据库，你会发现找不到前面所说的存储过程、表或者视图。这是因为Convert Schema菜单项只是在SSMA的Project里进行了转换，并未转换到数据库。这么设计为了让你可以在同步到SQL Server之前再做些其他修改，比如REGIONS表里的REGION_ID列在Oracle里是NUMBER类型，它被SSMA转换成了最安全的float(53)类型，如果你知道REGION_ID就是个整形，你可以把它修改为int类型，当然你最好对COUNTRIES表的REGION列也做同样的修改。&lt;/p&gt;
&lt;p&gt;在确认Schema迁移没有问题后，你可以同步到SQL Server数据库了，在SQL Server Metadata Explorer里右键点击HR数据库，选择Synchronize with Database，如图3所示。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/0456.SSMA03.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/307x198/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/0456.SSMA03.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图3 同步HR数据库到SQL Server&lt;/p&gt;
&lt;p&gt;这时可能会再次弹出SQL Server连接对话框和SQL Server Agent未运行的警告，确认后会显示Synchronize with the Database对话框，如图4所示。对话框里列出了SQL Server数据库和SSMA的树结构的差别，可以选择Hide Equal Objects来过滤掉两边相同的对象。由于我们连接的是新创建的HR数据库，所以左侧显示的都是 [Not Found] 状态，如果你之前做过同步这里会显示不同的状态，这里我们点击OK继续。等待右下角的进度条走完，留意主窗口Output栏是否报错，没有报错的话SQL Server里的对象应该已经创建好了。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/3225.SSMA04.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x469/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/3225.SSMA04.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图4 Synchronize with the Database对话框&lt;/p&gt;
&lt;p&gt;再次使用SQL Server Management Studio或者Visual Studio来查看HR数据库中的对象，会发现一些$SSMA打头的表或者存储过程等，这些是迁移一些特殊对象（比如Oracle的Sequence对象）所创建出来的辅助对象。&lt;/p&gt;
&lt;p&gt;在成功迁移了Schema之后，我们就可以来进行迁移的最后一步：数据迁移。有了SSMA的帮助数据迁移也非常简单，右键点击Oracle Metadata Explorer里的HR数据库，选择Migrate Data，如图5所示。SSMA会再次提示Oracle和SQL Server的连接信息，如果之前做过数据迁移可能会有数据覆盖的警告信息，如果有点击Continue继续。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/2781.SSMA05.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/309x314/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/2781.SSMA05.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图5 数据迁移&lt;/p&gt;
&lt;p&gt;如果你的数据库数据比较多，SSMA会运行较长一段时间，在这过程中你可以随时点击工具栏上的Stop按钮来停止数据迁移。迁移结束后，SSMA会有一个数据迁移报告，如图6所示。该报告描述了迁移过程中那些表的数据被成功迁移，多少行数据被迁移以及耗时多少等等。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6283.SSMA06.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x354/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6283.SSMA06.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6 数据迁移报告&lt;/p&gt;
&lt;p&gt;本文简单介绍了如何使用SSMA for Oracle 5.0来帮助我们把一个Oracle数据库迁移到SQL Server数据库，包括迁移评估、Schema迁移以及数据迁移。&lt;/p&gt;
&lt;p&gt;软件开发工程师 徐进&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10172019" width="1" height="1"&gt;</description></item><item><title>SQL Server Migration Assistant简介（一）</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/05/31/sql-server-migration-assistant-1.aspx</link><pubDate>Tue, 31 May 2011 03:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169753</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10169753</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/05/31/sql-server-migration-assistant-1.aspx#comments</comments><description>&lt;p&gt;SQL Server Migration Assistant（简称SSMA）是由微软发布的帮助客户更容易地从Oracle/Sybase/MySQL/Access迁移到SQL Server以及SQL Azure的一个工具集，几周前我们刚刚发布了&lt;a href="http://blogs.msdn.com/b/ssma/archive/2011/04/28/sql-server-migration-assistant-v5-0-is-now-available.aspx"&gt;SSMA 5.0&lt;/a&gt;版本，该版本支持了最新的代号为Denali的SQL Server的CTP版本，并且增加了对SQL Azure迁移的支持。下表说明了SSMA 5.0所支持的迁移矩阵：&lt;/p&gt;
&lt;table width="612" cellpadding="0" cellspacing="0" border="0" class="MsoNormalTable"&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; height: 33.65pt;"&gt;
&lt;td width="78" style="width: 58.5pt; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext 1.0pt; mso-border-top-alt: solid windowtext .5pt; background: #CCC0DA; padding: 0in 5.4pt 0in 5.4pt; height: 33.65pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;Migrating From&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="138" style="width: 103.5pt; border: solid windowtext 1.0pt; border-left: none; mso-border-top-alt: solid windowtext .5pt; mso-border-bottom-alt: solid windowtext 1.0pt; mso-border-right-alt: solid windowtext 1.0pt; background: #CCC0DA; padding: 0in 5.4pt 0in 5.4pt; height: 33.65pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;Using SSMA Tool&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="204" style="width: 153.0pt; border: solid windowtext 1.0pt; border-left: none; mso-border-top-alt: solid windowtext .5pt; mso-border-bottom-alt: solid windowtext 1.0pt; mso-border-right-alt: solid windowtext 1.0pt; background: #D8E4BC; padding: 0in 5.4pt 0in 5.4pt; height: 33.65pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;To SQL Server &lt;br /&gt;(2005, 2008, 2008 R2, &amp;ldquo;Denali&amp;rdquo;)&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="192" style="width: 2.0in; border: solid windowtext 1.0pt; border-left: none; mso-border-top-alt: solid windowtext .5pt; mso-border-bottom-alt: solid windowtext 1.0pt; mso-border-right-alt: solid windowtext 1.0pt; background: #D8E4BC; padding: 0in 5.4pt 0in 5.4pt; height: 33.65pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;To SQL Azure&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1; height: 15.7pt;"&gt;
&lt;td width="78" style="width: 58.5pt; border: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;Sybase&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="138" style="width: 103.5pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt;"&gt;&lt;a href="http://go.microsoft.com/?linkid=9771006"&gt;&lt;span style="mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: blue; mso-font-kerning: 0pt; text-decoration: none; text-underline: none;"&gt;SSMA for Sybase&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="204" style="width: 153.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="192" style="width: 2.0in; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic; (New in SSMA 5.0)&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2; height: 15.7pt;"&gt;
&lt;td width="78" style="width: 58.5pt; border: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;Oracle&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="138" style="width: 103.5pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt;"&gt;&lt;a href="http://go.microsoft.com/?linkid=9771004"&gt;&lt;span style="mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: blue; mso-font-kerning: 0pt; text-decoration: none; text-underline: none;"&gt;SSMA for Oracle&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="204" style="width: 153.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="192" style="width: 2.0in; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3; height: 15.7pt;"&gt;
&lt;td width="78" style="width: 58.5pt; border: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;MySQL&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="138" style="width: 103.5pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt;"&gt;&lt;a href="http://go.microsoft.com/?linkid=9771005"&gt;&lt;span style="mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: blue; mso-font-kerning: 0pt; text-decoration: none; text-underline: none;"&gt;SSMA for MySQL&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="204" style="width: 153.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="192" style="width: 2.0in; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes; height: 15.7pt;"&gt;
&lt;td width="78" style="width: 58.5pt; border: solid windowtext 1.0pt; border-top: none; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;Access&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="138" style="width: 103.5pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="left"&gt;&lt;span style="font-size: 11.0pt;"&gt;&lt;a href="http://go.microsoft.com/?linkid=9771007"&gt;&lt;span style="mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: blue; mso-font-kerning: 0pt; text-decoration: none; text-underline: none;"&gt;SSMA for Access&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="204" style="width: 153.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="192" style="width: 2.0in; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0in 5.4pt 0in 5.4pt; height: 15.7pt;"&gt;
&lt;p class="MsoNormal" align="center"&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: SimSun; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri; color: black; mso-font-kerning: 0pt;"&gt;&amp;radic;&lt;/span&gt;&lt;span style="font-size: 11.0pt; mso-bidi-font-size: 12.0pt; font-family: SimSun; mso-bidi-font-family: SimSun; color: #333333; mso-font-kerning: 0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里我们选择SSMA for Oracle 5.0为例介绍一下SSMA如何帮助您从Oracle迁移到SQL Server 2008 R2。首先我们从&lt;a href="http://go.microsoft.com/?linkid=9771004"&gt;这里&lt;/a&gt;下载SSMA for Oracle 5.0的压缩包，解压缩后有两个exe文件，SSMA for Oracle 5.0.exe是工具的安装包，SSMA for Oracle 5.0 Extension Pack.exe必须安装在SQL Server 2008 R2所在服务器，用来创建一些辅助运行需要的数据库表和存储过程等。&lt;/p&gt;
&lt;p&gt;首次运行SSMA for Oracle需要一个License，如图1所示，你可以点击链接，然后根据提示填写个人信息后免费申请，下载保存之后返回这个对话框选择你保存License的目录然后点击Refresh License按钮即可运行SSMA for Oracle了。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6254.SSMA01.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6254.SSMA01.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1&amp;nbsp; License Management对话框&lt;/p&gt;
&lt;p&gt;在主窗口File菜单中选择New Project&amp;hellip;菜单项将显示图2所示的对话框，输入项目的名字，选择SQL Server 2008作为迁移的目标数据库版本。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/2425.SSMA02.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/2425.SSMA02.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2&amp;nbsp; New Project对话框&lt;/p&gt;
&lt;p&gt;我们将使用Oracle XE的HR schema为例（下文称之为HR数据库以避免歧义，但其实Oracle并没有SQL Server数据库类似的概念）。SSMA为提高性能，缺省情况下不加载某些示例数据库（包括HR数据库），这个缺省设置可以通过Project Settings来修改，选择Tools菜单的Project Settings菜单项，在弹出的对话框里点击General再选择Loading System Objects，然后勾选HR，如图3所示。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/5037.SSMA03.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/5037.SSMA03.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图3 Project Settings对话框&lt;/p&gt;
&lt;p&gt;然后我们连接Oracle服务器，点击工具条上的Connect to Oracle，输入Server名称、SID和用户名/密码，如图4所示。连接后会有个警告对话框告诉你hr用户没有足够的权限。由于我们只需要迁移HR数据库，这里可以点击Continue忽略它。如果你的Oracle服务器上有很多数据库，数据加载可能需要比较长的时间，请耐心等待&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/8078.SSMA04.png"&gt;&lt;img height="261" width="458" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/8078.SSMA04.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图4 连接到Oracle服务器&lt;/p&gt;
&lt;p&gt;连接上Oracle后我们首先评估一下迁移HR数据库会不会碰到问题，如果碰到问题大约需要多长时间来解决。评估并不需要连接目标SQL Server，只需要在左上方的树里展开Oracle服务器名称，然后展开Schemas，右键点击HR并选择Create Report，如图5所示。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6136.SSMA05.png"&gt;&lt;img height="343" width="340" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/6136.SSMA05.png" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/8738.SSMA05.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图5 评估HR数据库&lt;/p&gt;
&lt;p&gt;SSMA运行一段时间后会打开一个评估报告的对话框，如图6所示。这个评估报告很有用，里面会列出HR数据库里各种对象（包括函数、包、存储过程、表和视图等）能够成功迁移的比例，你可以在左边的树里选择你需要查看的某个对象，比如存储过程，比较Oracle的PL/SQL语法和迁移后的TSQL语法。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1033.SSMA06.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1033.SSMA06.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6 评估报告&lt;/p&gt;
&lt;p&gt;图7是一个包含有错误的评估报告，当包含错误时，SSMA会估算手工做转换大约需要多少时间，这样你就可以使用评估报告来帮助你做数据库迁移的时间规划。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1452.SSMA07.png"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-97-59/1452.SSMA07.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图7 一个包含错误的评估报告&lt;/p&gt;
&lt;p&gt;（未完待续）&lt;/p&gt;
&lt;p&gt;软件开发工程师 徐进&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169753" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SSMA/">SSMA</category></item><item><title>StreamInsight手札（五）——使用EventFlowDebugger调试事件流</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/15/streaminsight-notes-5.aspx</link><pubDate>Fri, 15 Apr 2011 07:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10154360</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10154360</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/15/streaminsight-notes-5.aspx#comments</comments><description>&lt;p&gt;StreamInsight提供了EventFlowDebugger以方便用户进行事件流调试。这一工具拥有直观的图形化界面，支持即时调试和日志调试，支持跟踪和回溯。&lt;/p&gt;
&lt;p&gt;本文将介绍EventFlowDebugger基本使用方法。&lt;/p&gt;
&lt;p&gt;EventFlowDebugger分为在线模式和离线模式两种使用方法。在线模式下，用户连接到StreamInsight服务器，在线进行调试，或者录制某一段时间的事件流供离线模式使用。离线模式下，用户通过加载Trace文件对事件流进行调试。&lt;/p&gt;
&lt;p&gt;下面对其主要功能进行介绍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;连接到服务器（在线）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在线模式需要用户连接到一个正在运行的StreamInsight服务器。&lt;/p&gt;
&lt;p&gt;StreamInsight服务器有两种，嵌入服务器和远程服务器：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span lang="ZH-CN"&gt;嵌入服务器（&lt;/span&gt;&lt;span&gt;Embedded Server&lt;/span&gt;&lt;span lang="ZH-CN"&gt;）：&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;var &lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #333333; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;cepServerEmbedded = &lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;Server&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #333333; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;.Create();&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span lang="ZH-CN"&gt;远程服务器（Remote Server）：&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;var &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #333333; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;cepServerRemote = &lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;Server&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #333333; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;.Connect(&lt;span style="color: #a31515;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;http://servername/StreamInsight"&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #333333; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;如果使用远程服务器，则用户可以直接连接远程服务器的地址。如果程序使用嵌入服务器，则需要在程序中添加如下代码：&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9.5pt"&gt;ServiceHost&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9.5pt"&gt; _dvHost = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9.5pt"&gt;IManagementService&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9.5pt"&gt; _service = &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 9.5pt"&gt;IManagementService&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9.5pt"&gt; proxy = server.CreateManagementService();&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9.5pt"&gt;_service = proxy;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9.5pt"&gt;_dvHost = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;ServiceHost&lt;/span&gt;(proxy);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #2b91af; font-size: 9.5pt;"&gt;WSHttpBinding&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 9.5pt;"&gt; binding = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WSHttpBinding&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;SecurityMode&lt;/span&gt;.Message);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 9.5pt;"&gt;binding.Security.Message.ClientCredentialType = &lt;span style="color: #2b91af;"&gt;MessageCredentialType&lt;/span&gt;.Windows;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 9.5pt;"&gt;binding.MaxReceivedMessageSize = 4655360;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 9.5pt;"&gt;_dvHost.AddServiceEndpoint(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;IManagementService&lt;/span&gt;), binding, &lt;span style="color: #a31515;"&gt;"&lt;span style="background: yellow; mso-highlight: yellow;"&gt;http://localhost:8080&lt;/span&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 9.5pt;"&gt;_dvHost.Open();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;同时需要添加引用Microsoft.ComplexEventProcessing.ManagementService.dll，输入加亮部分地址就可以连接嵌入服务器了。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8004.sinotes51.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;连接到服务器的几种常见错误&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 'Courier New'; color: #333333; font-size: 10pt; mso-fareast-font-family: 'Times New Roman';"&gt;HTTP could not register URL http://+:8001/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #333333; font-size: 10pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;这个错误是由于用户对访问的URL没有权限。解决方法如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family: 'Courier New'; color: #333333; font-size: 10pt; mso-fareast-font-family: 'Times New Roman';"&gt;netsh http add urlacl url=http://&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #333333; font-size: 10pt;"&gt;localhost&lt;/span&gt;&lt;span style="font-family: 'Courier New'; color: #333333; font-size: 10pt; mso-fareast-font-family: 'Times New Roman';"&gt;:8090/MyStreamInsightServer user=&amp;lt;domain\userid&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family: 'Courier New'; color: #333333; font-size: 10pt; mso-fareast-font-family: 'Times New Roman';"&gt;net localgroup StreamInsightUsers$Default /ADD SOMEDOMAIN\someuser&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;错误2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1464.sinotes52.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;一般是URL地址不正确或者StreamInsight程序没有运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8640.sinotes53.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;一般是由于StreamInsight程序没有运行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误4&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/6165.sinotes54.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;一般是由于用户没有添加到正确的组。注意检查如下几个用户组：StreamInsightUsers$***, Performance Log Users&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错误5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/6371.sinotes55.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;这个错误一般是由于用户程序中有断点。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;显示查询（在线和离线）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在通过在线模式连接服务器或者离线模式打开trace文件后，用户可以查看查询的图形化界面：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/2772.sinotes56.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;在线模式下，用户可以通过菜单上的&amp;ldquo;开始录制&amp;rdquo;和&amp;ldquo;停止录制&amp;rdquo;录制一段时间的事件流。也可以采用Trace.cmd start &amp;lt;文件名&amp;gt;.etl和Trace.cmd stop &amp;lt;文件名&amp;gt;.etl来录制。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;事件流分析（在线和离线）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用户可以通过如下菜单来实现对事件流的调试：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1016.sinotes57.PNG" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;重播菜单可以通过但不模式从头开始一步一步调试事件流的变化，也可以直接跳转到用户设置的断点。寻根分析（Root Cause Analysis）���以找出指定事件的事件源。演化分析（Event Propagation Analysis）可以更重指定事件之后的所有演变。通过多个菜单的综合运用，用户就可以找出事件流中的异常事件数据，并进行更进一步的分析。&lt;/p&gt;
&lt;p&gt;更多信息，请参见：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://technet.microsoft.com/zh-cn/library/ff518532.aspx"&gt;http://technet.microsoft.com/zh-cn/library/ff518532.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;软件测试工程师 金晶&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10154360" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>StreamInsight手札（四）——使用IEnumerable接口创建StreamInsight程序</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/streaminsight-notes-4.aspx</link><pubDate>Tue, 12 Apr 2011 07:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10152411</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10152411</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/streaminsight-notes-4.aspx#comments</comments><description>&lt;p&gt;本文将介绍如何利用IEnumerable接口创建StreamInsight应用程序。&lt;/p&gt;
&lt;p&gt;IEnumerable与IObservable最大的区别在于IEnumerable是采用Pull模式获取数据，而IObservable则是用Push模式推送数据。&lt;/p&gt;
&lt;p&gt;用户首先通过IEnumerable.GetEnumerator来获得数据源的Enumerator，然后通过调用IEnumerator.MoveNext和IEnumerator.Current来获取数据。StreamInsight的输入输出通过一个数据队列连接。输入适配器获得数据，并调用Enqueue将数据放入队列，输出适配器循环检测队列是否为空，如果不是空队列，则调用Dequeue将数据取出。&lt;/p&gt;
&lt;p&gt;在HelloInsight程序基础上，可以通过如下修改来实现IEnumerable接口。&lt;/p&gt;
&lt;p&gt;1、获取输入数据源的Enumerator（HelloPointInput.cs）：&lt;/p&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;!--?xml:namespace prefix = o /--&gt;&lt;o:o:p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;public&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; HelloPointInput(&lt;span style="COLOR: #2b91af"&gt;HelloInputConfig&lt;/span&gt; config)&lt;!--?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_config = config;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; streamReader = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;StreamReader&lt;/span&gt;(config.fileName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;strings = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (!streamReader.EndOfStream)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;strings.Add(streamReader.ReadLine());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;stringEnumerator = strings.GetEnumerator();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;streamReader.Close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/o:o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;2、读取Enumerator中的数据，并放入队列。注意判断队满的情况（HelloPointInput.cs）：&lt;/p&gt;
&lt;/div&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:o:p&gt;&lt;/o:o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;private&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ProduceEvents()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (AdapterState != AdapterState.Stopping)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt;stringEnumerator.MoveNext()&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; line = stringEnumerator.Current;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; pendingEvent = CreateInsertEvent();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pendingEvent.StartTime = &lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pendingEvent.Payload = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;HelloPayload&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;str = line&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;EnqueueOperationResult result;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt;result = Enqueue(&lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; pendingEvent);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="BACKGROUND: yellow; COLOR: blue; mso-highlight: yellow"&gt;if&lt;/span&gt;&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt; (result == EnqueueOperationResult.Full)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(1000);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//Ready();&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt;EnqueueCtiEvent(&lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt;.Now);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(1000);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;catch&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: green"&gt;//error handling should go here&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;else&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;break&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Stopped();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;注意：在IEnumerator模式下，CTI事件是必须的，否则不会产生数据输出。&lt;/p&gt;
&lt;p&gt;3、循环读取队列中的数据，并进行输出处理（HelloPointOutput.cs）：&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;private&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; ConsumeEvents()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;PointEvent&amp;lt;&lt;span style="COLOR: #2b91af"&gt;HelloPayload&lt;/span&gt;&amp;gt; currEvent;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DequeueOperationResult result;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;while&lt;/span&gt; (AdapterState != AdapterState.Stopping)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt;result = Dequeue(&lt;span style="COLOR: blue"&gt;out&lt;/span&gt; currEvent);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt;result == DequeueOperationResult.Empty&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Ready();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;else&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (currEvent.EventKind == EventKind.Insert)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Output: "&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;currEvent.Payload.str&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="BACKGROUND: yellow; mso-highlight: yellow"&gt;ReleaseEvent(&lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; currEvent);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Stopped();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; TEXT-AUTOSPACE: ; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;4、运行程序&lt;/p&gt;
&lt;p&gt;建立测试文件：&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/2451.sinotes41.png" /&gt;&lt;/p&gt;
&lt;p&gt;将输入数据源指向测试文件的存储地址。运行程序，得到如下输出：&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/2248.sinotes42.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;软件测试工程师 金晶&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10152411" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-15-24-11/HelloInsight.zip" length="28781" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>StreamInsight手札（三）——使用IObservable接口创建StreamInsight程序</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/streaminsight-notes-3.aspx</link><pubDate>Tue, 12 Apr 2011 07:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10152395</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10152395</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/streaminsight-notes-3.aspx#comments</comments><description>&lt;p&gt;本文将介绍如何利用IObservable接口创建StreamInsight应用程序。&lt;/p&gt;
&lt;p&gt;Observer是.net Framework 4中引入的开发模式。&lt;a href="http://msdn.microsoft.com/en-us/library/dd783449.aspx"&gt;IObserver&amp;lt;T&amp;gt;&lt;/a&gt;和&lt;a href="http://msdn.microsoft.com/en-us/library/dd990377.aspx"&gt;IObservable&amp;lt;T&amp;gt;&lt;/a&gt;接口为基于推送的通知提供通用机制，也称为观察者设计模式。IObservable&amp;lt;T&amp;gt; 接口表示发送通知（提供程序）的类；IObserver&amp;lt;T&amp;gt; 接口表示接收通知（观察器）的类。&lt;/p&gt;
&lt;p&gt;在下列应用场景下，适合采用Observable模式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;历史数据查询。对有限长的大数据集进行临时的查询。&lt;/li&gt;
&lt;li&gt;Ad hoc查询。对数据进行一系列交互的ad hoc查询。&lt;/li&gt;
&lt;li&gt;内嵌于用户程序。StreamInsight内嵌于用户应用程序之中。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;使用这种开发模型，开发者只需要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;实现IObservable接口&lt;/li&gt;
&lt;li&gt;实现IObserver接口&lt;/li&gt;
&lt;li&gt;绑定到查询&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下面将用示例代码来说明.。&lt;/p&gt;
&lt;p&gt;1、安装Reactive Extension for .Net 4：&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1638.sinotes31.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;2、新建一个工程，注意选择.net framework 4.0。&lt;/p&gt;
&lt;p&gt;3、添加如下引用。System.CoreEx和System.Reactive在C:\Program Files\Microsoft Cloud Programmability\Reactive Extensions\v1.0.2856.0\Net4\目录下。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1565.sinotes32.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;定义事件Payload：&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; HelloInsightObservable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;HelloPayload&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; value { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;5、定义InputObservable类实现Iobservable接口&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;public&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;InputObservable&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;IObservable&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p&gt;这个类需要实现Subscribe方法：&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;public&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: #2b91af;"&gt;IDisposable&lt;/span&gt; Subscribe(&lt;span style="color: #2b91af;"&gt;IObserver&lt;/span&gt;&amp;lt;&lt;span style="color: blue;"&gt;int&lt;/span&gt;&amp;gt; observer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (observer != &lt;span style="color: blue;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span style="color: blue;"&gt;this&lt;/span&gt;.observers.Contains(observer))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;.observers.Add(observer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; observer &lt;span style="color: blue;"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IDisposable&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;我们还需要在这个类里模拟输入。我们定义了一个Timer，当定时器时间到时，调用定时器的回调函数生成一个随机整数，并调用observer的OnNext方法推送数据。&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;private&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; GenerateInput(&lt;span style="color: blue;"&gt;object&lt;/span&gt; _)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue;"&gt;var&lt;/span&gt; observer &lt;span style="color: blue;"&gt;in&lt;/span&gt; observers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; value = random.Next(100);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Random generated data {0} : {1}"&lt;/span&gt;, generatedNumber, value);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;observer.OnNext(value);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;generatedNumber++;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (generatedNumber &amp;gt;= dataNumber)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;observer.OnCompleted();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;timer.Change(&lt;span style="color: #2b91af;"&gt;Timeout&lt;/span&gt;.Infinite, timeSpan);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;timer.Change(timeSpan, timeSpan);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;6、将Observable类作为CEP引擎的输入。&lt;/p&gt;
&lt;p&gt;在Main函数中添加如下代码。注意加亮部分的代码，这里与适配器方式的程序不同的是，没有插入CTI事件。&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; inputObservable = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;InputObservable&lt;/span&gt;(10);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; (&lt;span style="color: blue;"&gt;var&lt;/span&gt; server = Server.Create(&lt;span style="color: #a31515;"&gt;"DefaultInstance"&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; application = server.CreateApplication(&lt;span style="color: #a31515;"&gt;"Observable Application"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; stream = inputObservable.ToPointStream(application,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;e =&amp;gt; PointEvent.CreateInsert(&lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt;.Now, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;HelloPayload&lt;/span&gt; { value = e }),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;AdvanceTimeSettings.StrictlyIncreasingStartTime,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #a31515;"&gt;"Observable Stream"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; query = &lt;span style="color: blue;"&gt;from&lt;/span&gt; e &lt;span style="color: blue;"&gt;in&lt;/span&gt; stream&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;where&lt;/span&gt; e.value &amp;gt; 50&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;select&lt;/span&gt; e;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;7、定义OutputObserver类实现Iobserver接口。&lt;/p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;class&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: #2b91af;"&gt;OutputObserver&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;IObserver&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;HelloPayload&lt;/span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;virtual&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnCompleted()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Stopping query..."&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;virtual&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnError(&lt;span style="color: #2b91af;"&gt;Exception&lt;/span&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Unexpected error occured"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;virtual&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnNext(&lt;span style="color: #2b91af;"&gt;HelloPayload&lt;/span&gt; payload)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"DataOutput: {0}"&lt;/span&gt;, payload.value);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;8、将OutputObserver绑定到query。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;在main函数中添加如下代码：&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; outputObserver = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;OutputObserver&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; outputObservable = query.ToObservable();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;outputObservable.Subscribe(outputObserver);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="background-color: #ffff00;"&gt;&lt;span style="font-family: Consolas; color: #2b91af; font-size: 9.5pt;"&gt;Console&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Subscribe函数执行后，就会开始接收数据输入，并调用OnNext方法输出。注意最后一句话的作用是让程序继续运行直至数据输入完成，Observable调用Observer的OnComplete方法，或者用户中途通过输入任意字符停止Observer。&lt;/p&gt;
&lt;p&gt;9、程序运行的结果如下：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/7128.sinotes33.png" border="0" /&gt;&lt;/p&gt;
&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="font-family: Consolas;"&gt;
&lt;p&gt;
&lt;p&gt;软件测试工程师 金晶&lt;/p&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10152395" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-15-23-95/HelloInsight.zip" length="28781" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>利用SQL Server 2008迁移助手完成从Oracle到SQL Server的迁移——视频教学</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/sql-server-2008-ssma-oracle-sql-server.aspx</link><pubDate>Tue, 12 Apr 2011 05:41:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10152368</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10152368</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/sql-server-2008-ssma-oracle-sql-server.aspx#comments</comments><description>&lt;p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;讲师：&amp;nbsp;资深项目经理 &amp;nbsp;王清越&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ZH-CN"&gt;你有&lt;/span&gt;Oracle&lt;span lang="ZH-CN"&gt;数据库要迁移到&lt;/span&gt;SQL Server&lt;span lang="ZH-CN"&gt;吗？微软提供了一个免费的工具来帮你做数据库迁移。我们会讨论迁移到&lt;/span&gt;
SQL Server&lt;span lang="ZH-CN"&gt;的好处，和如何用&lt;/span&gt;SQL
Server&lt;span lang="ZH-CN"&gt;迁移助理（&lt;/span&gt;SSMA）&lt;span lang="ZH-CN"&gt;来自动做数据库迁移。我们会演示如何用&lt;/span&gt;SQL Server&lt;span lang="ZH-CN"&gt;迁移助理来迁移数据库模式和&lt;/span&gt;PL/SQL&lt;span lang="ZH-CN"&gt;程序等。我们一起探讨&lt;/span&gt;SQL Server&lt;span lang="ZH-CN"&gt;迁移助理（&lt;/span&gt;SSMA）&lt;span lang="ZH-CN"&gt;如何为你节省数据库迁移的时间和成本。&lt;/span&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2011/04/12/sql-server-2008-ssma-oracle-sql-server.aspx"&gt;(Please visit the site to view this video)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;如果有什么问题，请直接通过评论提出。&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10152368" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SSMA/">SSMA</category></item><item><title>利用SQL Server 2008 R2升级顾问进行升级前的准备和评估——视频教学</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/30/sql-server-2008-r2-migration-assistant-webcast.aspx</link><pubDate>Wed, 30 Mar 2011 04:52:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10147521</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10147521</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/30/sql-server-2008-r2-migration-assistant-webcast.aspx#comments</comments><description>&lt;p&gt;讲师：项目经理 林默&lt;/p&gt;
&lt;p&gt;这个视频教学讲介绍如何利用Microsoft SQL Server 2008 R2升级顾问对SQL Server 2005的实例进行分析，以为升级到 SQL Server 2008 做准备。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2011/03/30/sql-server-2008-r2-migration-assistant-webcast.aspx"&gt;(Please visit the site to view this video)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果有什么问题，请直接通过评论提出。&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10147521" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/_4753A77E7E98EE95_/">升级顾问</category></item><item><title>StreamInsight手札（二）——构建HelloInsight程序</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/29/streaminsight-notes-2.aspx</link><pubDate>Tue, 29 Mar 2011 08:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10147037</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10147037</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/29/streaminsight-notes-2.aspx#comments</comments><description>&lt;p&gt;本文将详细介绍如何建立一个简单的StreamInsight程序&amp;mdash;&amp;mdash;HelloInsight。这个程序接受来自输入适配器的字符串输入，并通过输出适配器输出。&lt;/p&gt;
&lt;p&gt;1、安装&lt;a href="http://blogs.msdn.com/b/streaminsight/archive/2010/06/28/update-on-the-update.aspx"&gt;StreamInsight&lt;/a&gt;和Visual Studio 2010。&lt;/p&gt;
&lt;p&gt;2、新建一个新的工程。可以选择.Net Framework 3.5 SP1或.Net Framework 4。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8780.sinotes21.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;3、添加引用。引用dll的位置在&amp;lt;your driver&amp;gt;\program files\microsoft streamInsight1.1\C:\Program Files\Microsoft StreamInsight 1.1\Bin。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/0131.sinotes22.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;4、在program.cs using添加到引用：&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; Microsoft.ComplexEventProcessing;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; Microsoft.ComplexEventProcessing.Adapters;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; Microsoft.ComplexEventProcessing.Diagnostics;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; Microsoft.ComplexEventProcessing.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; Microsoft.ComplexEventProcessing.ManagementService;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;5、Main函数创建CEP服务器。DefaultInstance是StreamInsight安装时指定的实例名。&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;using&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; (Server server = Server.Create(&lt;span style="COLOR: #a31515"&gt;"DefaultInstance"&lt;/span&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Application application = server.CreateApplication(&lt;span style="COLOR: #a31515"&gt;"HelloInsight"&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;6、创建事件负载（payload）。事件的负载是输入流里面需要CEP服务器处理的数据。事件负载不能是用户定义类型。&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; HelloInsight&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;HelloPayload&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; str { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;7、创建输入输出适配器（Adapter）。输入输出适配器的结构基本一致，这里重点介绍输入适配器，输出适配器与之类似。适配器主要包括：配置类、工厂类和输入/输出类。配置类一般处理输入流的参数，比如流文件的名称等。工厂类用来实现输入、输出适配器的基类。输入、输出类处理数据流并生成可以供CEP服务器处理的事件。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/7002.sinotes23.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;HelloInsight这个例子里将输入的字符串作为参数定义配置类：&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt"&gt;namespace&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt; HelloInsight.InputAdapters&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; HelloInputConfig&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; string inputString { get; set; }&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: SimSun; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;工厂类定义如下：&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="ZH-CN" style="FONT-FAMILY: SimSun; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: SimSun; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.ComplexEventProcessing;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.ComplexEventProcessing.Adapters;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; HelloInsight.InputAdapters&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; HelloInputFactory : ITypedInputAdapterFactory&amp;lt;HelloInputConfig&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; InputAdapterBase Create&amp;lt;TPayload&amp;gt;(HelloInputConfig configInfo, EventShape eventShape)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// All the events are of point type, for this demo&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (eventShape == EventShape.Point)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; HelloPointInput(configInfo);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;default&lt;/span&gt;(InputAdapterBase);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Dispose()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;输入类定义如下：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.ComplexEventProcessing;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.ComplexEventProcessing.Adapters;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; HelloInsight.InputAdapters&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; HelloPointInput : TypedPointInputAdapter&amp;lt;HelloPayload&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; HelloInputConfig _config;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; HelloPointInput(HelloInputConfig config)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_config = config;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Start()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProduceEvents();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Resume()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ProduceEvents();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Dispose(&lt;span style="color: blue;"&gt;bool&lt;/span&gt; disposing)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;base.Dispose(disposing);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ProduceEvents()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;var pendingEvent = CreateInsertEvent();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pendingEvent.StartTime = DateTime.Now;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;pendingEvent.Payload = &lt;span style="color: blue;"&gt;new&lt;/span&gt; HelloPayload&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;str = _config.inputString&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;};&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;EnqueueOperationResult result = Enqueue(ref pendingEvent);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;EnqueueCtiEvent(DateTime.Now);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Stopped();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;输出类定义如下：&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.ComplexEventProcessing;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.ComplexEventProcessing.Adapters;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;namespace&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; HelloInsight.OutputAdapters&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;HelloPointOutput&lt;/span&gt; : TypedPointOutputAdapter&amp;lt;HelloPayload&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; HelloPointOutput(HelloOutputConfig config)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Start()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ConsumeEvents();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Resume()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ConsumeEvents();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Dispose(&lt;span style="color: blue;"&gt;bool&lt;/span&gt; disposing)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;base&lt;/span&gt;.Dispose(disposing);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; ConsumeEvents()&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;PointEvent&amp;lt;HelloPayload&amp;gt; currEvent;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DequeueOperationResult result;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;while&lt;/span&gt; (&lt;span style="color: blue;"&gt;true&lt;/span&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (AdapterState.Running == AdapterState)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;result = Dequeue(&lt;span style="color: blue;"&gt;out&lt;/span&gt; currEvent);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (result == DequeueOperationResult.Empty)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Ready();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (currEvent.EventKind == EventKind.Insert)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Output: "&lt;/span&gt; +&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;currEvent.Payload.str&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ReleaseEvent(&lt;span style="color: blue;"&gt;ref&lt;/span&gt; currEvent);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;/span&gt; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (AdapterState.Stopping == AdapterState)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Stopped();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;8、定义CEP服务器上的查询。在HelloInsight这个例子里，使用最简单的查询，即查询出输入流的全部输入。查询使用LINQ。&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;private&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; DirectOutput(CepStream&amp;lt;&lt;span style="color: #2b91af;"&gt;HelloPayload&lt;/span&gt;&amp;gt; cepStream, Application application)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Return only "Close" values using a where-clause&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; filteredCepStream = &lt;span style="color: blue;"&gt;from&lt;/span&gt; e &lt;span style="color: blue;"&gt;in&lt;/span&gt; cepStream&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;select&lt;/span&gt; e;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RunQuery(filteredCepStream, application, &lt;span style="color: #a31515;"&gt;"directly output the input data"&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;private&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; RunQuery(CepStream&amp;lt;HelloPayload&amp;gt; cepStream, Application application, &lt;span style="color: blue;"&gt;string&lt;/span&gt; queryDescription)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Configure output adapter&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; outputConfig = &lt;span style="color: blue;"&gt;new&lt;/span&gt; HelloOutputConfig();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Create query and bind to the output adapter&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background: yellow; color: blue; mso-highlight: yellow;"&gt;var&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow;"&gt; query = cepStream.ToQuery(application, &lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt;.NewGuid().ToString(), queryDescription, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(HelloOutputFactory), outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Start query&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;query.Start();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Wait until query change state&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;DiagnosticView diagnosticView;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;do&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Thread.Sleep(100);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;diagnosticView = query.Application.Server.GetDiagnosticView(query.Name);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} &lt;span style="color: blue;"&gt;while&lt;/span&gt; ((&lt;span style="color: blue;"&gt;string&lt;/span&gt;)diagnosticView[DiagnosticViewProperty.QueryState] == &lt;span style="color: #a31515;"&gt;"Running"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green;"&gt;// Stop query&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;query.Stop();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;这里，除了加亮部分县市的创建query的方法以外，用户还可以如下创建query：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; queryTemplate = application.CreateQueryTemplate(&lt;span style="color: #a31515;"&gt;"ExampleTemplate"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Description..."&lt;/span&gt;, cepStream);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; queryBinder = &lt;span style="color: blue;"&gt;new&lt;/span&gt; QueryBinder(queryTemplate);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;queryBinder.BindProducer&amp;lt;StockQuote&amp;gt;(&lt;span style="color: #a31515;"&gt;"input"&lt;/span&gt;, inputAdapter, inputConfig, EventShape.Point);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;queryBinder.AddConsumer&amp;lt;StockQuote&amp;gt;(&lt;span style="color: #a31515;"&gt;"output"&lt;/span&gt;, outputAdapter, outputConfig, EventShape.Point, StreamEventOrder.ChainOrdered);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; query = application.CreateQuery(&lt;span style="color: #a31515;"&gt;"ExampleQuery"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Description..."&lt;/span&gt;, queryBinder);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;9、Main函数里调用输入输出和查询。&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;CepStream&amp;lt;HelloPayload&amp;gt; input = CepStream&amp;lt;HelloPayload&amp;gt;.Create(&lt;span style="color: #a31515;"&gt;"input"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; inputConfig = &lt;span style="color: blue;"&gt;new&lt;/span&gt; HelloInputConfig&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;inputString = &lt;span style="color: #a31515;"&gt;"Hello StreamInsight!"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;};&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; outputConfig = &lt;span style="color: blue;"&gt;new&lt;/span&gt; HelloOutputConfig();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; inputAdapter = application.CreateInputAdapter&amp;lt;HelloInputFactory&amp;gt;(&lt;span style="color: #a31515;"&gt;"HelloInput"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Description"&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; outputAdapter = application.CreateOutputAdapter&amp;lt;HelloOutputFactory&amp;gt;(&lt;span style="color: #a31515;"&gt;"HelloOutput"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"Description"&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; inputStream = CepStream&amp;lt;HelloPayload&amp;gt;.Create(&lt;span style="color: #a31515;"&gt;"InputStream"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(HelloInputFactory), inputConfig, EventShape.Point);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;DirectOutput(inputStream, application);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;10、运行程序，输入的字符串输出到控制台。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1817.sinotes24.png" border="0" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;至此，HelloInsight的程序创建完成。通过修改输入/输出适配器和查询，用户可以在此基础上实现更加复杂的程序了。&lt;/p&gt;
&lt;p&gt;软件测试工程师 金晶&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10147037" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>StreamInsight手札（一）——初识</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/18/streaminsight-notes-1.aspx</link><pubDate>Fri, 18 Mar 2011 14:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10143070</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10143070</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/18/streaminsight-notes-1.aspx#comments</comments><description>&lt;p&gt;StreamInsight是SQL Server 2008 R2的新模块。它是一个基于.NET的平台，用于复杂事件处理（CEP，Complex Event Processing），即对于来自多数据源的无限事件序列提供近乎零延时的连续处理。StreamInsight是一个临时查询处理引擎，它可以支持应用程序对时间窗口内的事件进行查询处理。它对流数据的处理范围包括简单聚合、多数据源事件相关性、事件模式检测、甚至建立复杂事件序列和分析模型。StreamInsight的程序模型可以让用户通过LINQ定义这些查询，同时支持将查询结果无缝整合到C#的代码中。&lt;/p&gt;
&lt;p&gt;传统的数据库针对静态数据操作，所有信息先被实体化存储在数据库中，然后被取出，再进行一系列的计算。而StreamInsight则针对的是事件流的操作，事件流从入口通过适配器进入，经过一系列查询逻辑的处理，最终通过输出适配器分发到各个目标上。事件流数据暂时保存于内存中，减少了数据存储与读取的时间。同时，StreamInsight了引入了一种时间窗口机制，即对事件流按照时间窗口切片统计，随着事件流入不断推移时间窗口，保持窗口中统计最新的数据。&lt;/p&gt;
&lt;p&gt;因此，StreamInsight适用场景有如下特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入为数据流尤其是多源无限长数据流&lt;/li&gt;
&lt;li&gt;数据处理实时性要求高&lt;/li&gt;
&lt;li&gt;高吞吐量&lt;/li&gt;
&lt;li&gt;不关心中间结果&lt;/li&gt;
&lt;li&gt;数据不需要永久保留&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如，多个收费站车辆通过信息作为数据流输入，统计一段时间内车辆的平均数。&lt;/p&gt;
&lt;p&gt;下图是StreamInsight的架构：&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/6131.sinotes00.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;由上图可以看出，StreamInsight主要包括三个部分：输入适配器（Input Adapter）、输出适配器（Output Adapter）以及CEP服务器。由于输入输出和CEP服务器都是异步运行的，所以StreamInsight提供了事件流调试器（Event Flow Debugger）方便用户调试事件的处理过程。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下载CU2&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/streaminsight/archive/2010/06/28/update-on-the-update.aspx"&gt;http://blogs.msdn.com/b/streaminsight/archive/2010/06/28/update-on-the-update.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;StreamInsight MSDN文档&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee362541(SQL.105).aspx"&gt;http://msdn.microsoft.com/en-us/library/ee362541(SQL.105).aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;博客&lt;br /&gt;&lt;a href="http://blogs.msdn.com/streaminsight/"&gt;http://blogs.msdn.com/streaminsight/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;论坛&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/streaminsight"&gt;http://social.msdn.microsoft.com/Forums/en-US/streaminsight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;StreamInsight MSDN&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/ee476990.aspx"&gt;http://msdn.microsoft.com/en-us/ee476990.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;样例&lt;br /&gt;&lt;a href="http://streaminsight.codeplex.com"&gt;http://streaminsight.codeplex.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Twitter&lt;br /&gt;&lt;a href="http://twitter.com/streaminsight"&gt;http://twitter.com/streaminsight&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;软件测试工程师 金晶&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10143070" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>将数据库迁移到SQL Azure云数据库的三种方法——视频教学</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/08/three-tools-for-migrating-to-sql-asure-webcast.aspx</link><pubDate>Tue, 08 Mar 2011 07:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10137987</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10137987</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/08/three-tools-for-migrating-to-sql-asure-webcast.aspx#comments</comments><description>&lt;p&gt;讲师：范智华&lt;/p&gt;
&lt;p&gt;技术类别：SQL Azure、SQL Server&lt;/p&gt;
&lt;p&gt;本视频介绍和演示迁移工具：&lt;a href="http://technet.microsoft.com/zh-cn/gg637925(l=zh-cn)"&gt;SQL Server迁移助理（SQL Server Migration Assistant）&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2011/03/08/three-tools-for-migrating-to-sql-asure-webcast.aspx"&gt;(Please visit the site to view this video)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本视频介绍和演示迁移工具：&lt;a href="http://technet.microsoft.com/zh-cn/gg638196(l=zh-cn)"&gt;数据层应用程序（Data-tier Application / DAC）&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2011/03/08/three-tools-for-migrating-to-sql-asure-webcast.aspx"&gt;(Please visit the site to view this video)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本视频介绍和演示迁移工具：&lt;a href="http://technet.microsoft.com/zh-cn/gg638201(l=zh-cn)"&gt;脚本生成向导（Generate Script Wizard / GSW）&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2011/03/08/three-tools-for-migrating-to-sql-asure-webcast.aspx"&gt;(Please visit the site to view this video)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10137987" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category></item><item><title>将数据库迁移到SQL Azure的三种工具</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/07/three-tools-for-migrating-to-sql-asure.aspx</link><pubDate>Mon, 07 Mar 2011 06:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10137526</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10137526</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2011/03/07/three-tools-for-migrating-to-sql-asure.aspx#comments</comments><description>&lt;p&gt;对于很多SQL Azure用户来说，使用SQL Azure的第一步就是将已有的数据库迁移到SQL Azure。下面我将向你介绍帮助您迁移数据库的三种工具。&lt;/p&gt;
&lt;h2&gt;一、SQL Server迁移助理（SQL Server Migration Assistant）&lt;/h2&gt;
&lt;p&gt;首先介绍的是SQL Server迁移助理（SQL Server Migration Assistant，SSMA）。它有分别针对Access、MySQL、Oracle、Sybase的几种版本。这里我们以SQL Server Migration Assistant 2008 for Access v4.2 为例。&lt;/p&gt;
&lt;p&gt;
1、先从File菜单打开迁移向导（Migration Wizard）。&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4760.msqlasure01.png" /&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2、然后在&amp;ldquo;创建新工程&amp;rdquo;（Create New Project）这一步，将迁移到（Migration To）修改为SQL Azure。这是需要注意的关键步骤，因为默认的选项是SQL &amp;nbsp;Server。&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/7317.msqlasure02.png" /&gt;&lt;/p&gt;
&lt;p&gt;3、然后， 我们把Access数据库加入到向导中，稍候几秒钟之后，这个向导就会列出Access数据库中的所有表和查询等对象，以供选择。&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4263.msqlasure03.png" /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8802.msqlasure04.png" /&gt;&lt;/p&gt;
&lt;p&gt;4、选择好需要迁移的对象之后，下一步，我们需要提供SQL Azure的服务器和数据库名称及登录信息。一般来说，这时我们可以在自己的SQL Azure服务器上创建一个空白数据库。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/0474.msqlasure05.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;5、最��，迁移的核心开始执行了。在这一步中，迁移助理先把Access中的对象（包括表、主键、外键、约束等等）转换成SQL Azure中对应的对象，并在SQL Azure数据库中创建这些对象，然后再把表内的所有数据行转换并载入SQL Azure数据库中。对于转换对象的过程，迁移助理生成了详细的报告。我们可以点击Report按钮来浏览。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/7608.msqlasure06.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;h2&gt;二、数据层应用程序（Data-tier Application，DAC）&lt;/h2&gt;
&lt;p&gt;通过数据层应用程序（Data-tier Application，缩写为DAC），我们可以将SQL Server中的数据库的Schema提取出来，并且可以方便地将Schema布署到SQL Azure上。数据层应用程序DAC已经集成在SQL Server Management Studio (2008 R2) 与Visual Studio 2010之中。面前，DAC只能提取和布署Schema，而不能提取、布署表中的数据行。今后，DAC会增加这项功能。&lt;/p&gt;
&lt;p&gt;DAC很适宜用于基于数据库的软件的开发过程中，尤其当我们把Visual Studio和Management Studio融合为一体时。&lt;/p&gt;
&lt;p&gt;在本文中， 我们以Management Studio中的DAC为例，来介绍数据层应用程序的提取与布署。&lt;/p&gt;
&lt;p&gt;
1、启动提取数据层应用程序的向导。只需要在Object Explorer中右键点击某一个SQL Server的数据库，在弹出的菜单中选&amp;ldquo;Tasks&amp;rdquo;，然后选择&amp;ldquo;Extract Data-tier Application&amp;rdquo;。这样，提取数据层应用程序的向导就弹出来了&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5001.msqlasure07.png" /&gt;。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2、在这个向导中的Set Properties（设置）页面中，我们可以设置应用程序的名称以及DAC Package的路径。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/3441.msqlasure08.png" /&gt;&lt;/p&gt;
&lt;p&gt;3、接着，进入Validation and Summary（校验与总结）页面。如果第一步中所选的数据库中有DAC不支持的特性，这一步会报错。&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/7266.msqlasure09.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4、进入Build Package页面生成DAC包。下面我们将把刚才生成的DAC包布署到SQL Azure服务器中。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1307.msqlasure10.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;5、在Management Studio的Object Explorer中，右键点击 一个SQL Azure服务器。在弹出的菜单中，选择&amp;ldquo;Deploy Data-tier Application&amp;rdquo;（布署数据层应用程序）。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5584.msqlasure11.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;6、在弹出的&amp;ldquo;Deploy Data-tier Application&amp;rdquo;向导中，进入&amp;ldquo;Select Package&amp;rdquo;页面。在这儿，我们选择刚才生成的DAC包。&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4162.msqlasure12.png" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;7、在随后的&amp;ldquo;Update Configuration&amp;rdquo;页面中，我们可以修改这次布署的目标数据库的名字。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/2821.msqlasure13.png" /&gt;&lt;/p&gt;
&lt;p&gt;8、在Summary页面中，可以看到此次布署的总结。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8875.msqlasure14.png" /&gt;&lt;/p&gt;
&lt;p&gt;9、最后，在&amp;ldquo;Deploy DAC&amp;rdquo;页面中，向导会将DAC包布署到SQL Azure服务器，并且在服务器上注册这个DAC包的元数据。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8780.msqlasure15.png" /&gt;&lt;/p&gt;
&lt;h2&gt;三、脚本生成向导（Generate Script Wizard，GSW）&lt;/h2&gt;
&lt;p&gt;使用脚本生成向导来迁移数据库的原理是：将一个数据库的所有Schema与数据行都用GSW导出成Transact-SQL的脚本，然后在SQL数据库中执行这些脚本。具体地说则有下述步骤。&lt;/p&gt;
&lt;p&gt;1、在Management Studio的Object Explorer中，右键点击某一SQL Server的数据库。在弹出的菜单中，选取&amp;ldquo;Tasks&amp;rdquo;，再在展开的菜单中选择&amp;ldquo;Generate Scripts&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/3365.msqlasure16.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;2、这时会弹出&amp;ldquo;Generate and Publish Scripts&amp;rdquo;向导，即&amp;ldquo;生成与发布脚本&amp;rdquo;向导。在这个向导的Introduction页面中，点击Next。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5504.msqlasure17.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;3、在&amp;ldquo;Choose Objects&amp;rdquo;页面中，我们可以选择需要迁移的表（Tables）、存储过程（Stored Procedures）、用户定义的数据类型（User-Defined Data Types）以及Schemas。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1385.msqlasure18.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;4、在&amp;ldquo;Set Scripting Options&amp;rdquo;页面中，我们需要点击&amp;ldquo;Advanced&amp;rdquo;按钮，以更改高级选项。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4075.msqlasure19.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;5、我们需要更改两处高级选项。其一是将&amp;ldquo;Script for the database engine type&amp;rdquo;改选为&amp;ldquo;SQL Azure Database&amp;rdquo;。这是因为我们要将这个数据库迁移到SQL Azure上。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4456.msqlasure20.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;6、其二是将&amp;ldquo;Types of data to script&amp;rdquo;改选为&amp;ldquo;Schema and data&amp;rdquo;，以将数据模式与数据行一起迁移。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/6114.msqlasure21.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;7、然后，我们可以逃过&amp;ldquo;Summary&amp;rdquo;页面，来到&amp;ldquo;Save or Publish Scripts&amp;rdquo;页面。在这儿，GSW将把我们选取的数据库对象转录誊写为一个T-SQL的脚本文件。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4048.msqlasure22.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;8、现在，我们就可以在SQL Azure服务器上新建一个数据库，然后通过Management Studio的脚本窗口，在这个数据库中来执行刚才生成的T-SQL脚本。这样，就完成了这次数据库迁移。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/8322.msqlasure23.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;软件开发测试工程师 &amp;nbsp;范智华&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10137526" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Azure/">SQL Azure</category></item><item><title>扩展事件在Denali CTP1里的新功能</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/12/23/xevent-feature-in-sql-denali-ctp1.aspx</link><pubDate>Thu, 23 Dec 2010 13:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108568</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10108568</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/12/23/xevent-feature-in-sql-denali-ctp1.aspx#comments</comments><description>&lt;p&gt;我的同事林默2009年曾写了一篇关于SQL Server 2008里扩展事件（XEvent）介绍的&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2009/04/28/sql-server-2008-sql-server-extended-events.aspx"&gt;博文&lt;/a&gt;，XEvent在SQL 2008里所有的操作必须用TSQL来实现，不是非常方便。在上个月刚刚发布的&lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/sql-server-code-named-quot-denali-quot-ctp1-release-notes.aspx"&gt;Denali CTP1&lt;/a&gt;里我们对XEvent提供了更多的支持，建立了一个Object Model，在其基础上提供了SQL Server Management Studio（SSMS）里的一个简单UI并同时对PowerShell提供了支持。&lt;/p&gt;
&lt;p&gt;有了Object Model后，我们就可以用写.NET代码来创建XEvent Session，修改Session或者枚举数据库里的所有Session。我们可以在Visual Studio里新建一个简单的.NET 3.5 Console Application，并增加对Microsoft.SqlServer.ConnectionInfo，Microsoft.SqlServer.Management.Sdk.Sfc以及Microsoft.SqlServer.XEvent的引用。如果你在Add Reference对话框的.NET标签找不到这些Assembly的话，你可以通过Browse标签到C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies目录下添加这些Assembly。在Program.cs里先增加下面几个using：&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;using System.Data.SqlClient;&lt;br /&gt;using Microsoft.SqlServer.Management.XEvent;
using Microsoft.SqlServer.Management.Sdk.Sfc;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在Main函数里输入下面的代码（你可能需要改变Connection String）：&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="csharp"&gt;using (SqlConnection conn = new SqlConnection("Data Source=.;Integrated Security=True"))&lt;br /&gt;{&lt;br /&gt;    conn.Open();&lt;br /&gt;    XEStore store = new XEStore(new SqlStoreConnection(conn));&lt;br /&gt;    Session session = store.CreateSession("blogtest");&lt;br /&gt;    Event evt = session.AddEvent("sqlserver.sql_statement_starting");&lt;br /&gt;    evt.AddAction("sqlserver.database_name");&lt;br /&gt;    session.AddEvent("sqlserver.sql_statement_completed");&lt;br /&gt;    Target target = session.AddTarget(store.RingBufferTargetInfo);&lt;br /&gt;    session.MaxDispatchLatency = 5; //change dispatch latency to 5sec (default 30sec)&lt;br /&gt;    session.Create();&lt;br /&gt;    session.Start();&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编译然后运行该程序，一个叫blogtest的XEvent Session就被创建并启动起来。我们可以用SSMS来查看这个session，连接到你Connection String里的数据库服务器，在Object Explorer里展开Management节点，Extended Events是我们新加的一个节点，展开两级后可以看到我们刚刚创建的blogtest，如图1所示。&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/0334.xevent01.png" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;图1 &amp;nbsp; &amp;nbsp;新加的Extended Events节点&lt;/p&gt;
&lt;p&gt;右键点击blogtest节点，在菜单（如图2所示）里你可以启动/停止、导入/导出、删除或者Script选中的Session。导入/导出是针对模板，你可以选择任何一个Session导出为模板分享给别人使用，而Script则生成所选Session的创建/删除SQL语句，可以生成到新窗口、文件、剪贴板或者Agent Job。有了导入/导出和Script之后你就可以在模板和SQL语句之间随意转换。&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/2526.xevent02.png" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;图2 &amp;nbsp; &amp;nbsp;Session节点上的右键菜单&lt;/p&gt;
&lt;p&gt;图2菜单里有个Start PowerShell菜单项，这就是我们前面提到的我们对PowerShell支持。点击它将打开一个PowerShell窗口并进入在Session所在的目录。你在PowerShell里同样可以创建/修改或枚举XEvent Session，如图3所示。你也可以尝试将下面的script保存成C:\blog.ps1，然后在PowerShell窗口里输入C:\blog.ps1来执行它（如果执行.ps1文件出现权限的问题可以输入help set-executionpolicy查看帮助）。&lt;/p&gt;
&lt;pre class="scroll"&gt;&lt;code class="mysql"&gt;cd \XEvent&lt;br /&gt;$h = hostname&lt;br /&gt;cd $h&lt;br /&gt;$store = dir | where {$_.DisplayName -ieq 'default'}&lt;br /&gt;$session = new-object Microsoft.SqlServer.Management.XEvent.Session&lt;br /&gt;   -argumentlist $store, "blogtest2"&lt;br /&gt;$session.AddEvent("sqlserver.sql_statement_completed")&lt;br /&gt;$session.Create()&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;img border="0" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5488.xevent03.png" /&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;图3 &amp;nbsp; &amp;nbsp;在PowerShell里创建XEvent Session&lt;/p&gt;
&lt;p&gt;Denali CTP1里SSMS操作XEvent Session的UI还很简单，在此后的CTP里我们会继续增加其他功能，请继续关心我们的blog。&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;参考文献&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb630354(v=SQL.110).aspx"&gt;Introducing SQL Server Extended Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/extended_events/archive/2010/11/18/what-s-new-for-extended-events-in-sql-server-code-named-denali-ctp1.aspx"&gt;What&amp;rsquo;s new for Extended Events in SQL Server code-named &amp;ldquo;Denali&amp;rdquo; CTP1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;软件开发工程师 徐进&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108568" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/XEvent/">XEvent</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Denali/">Denali</category></item><item><title>深入探索PowerPivot客户端和服务器端架构</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/12/14/powerpivot-teched-2010.aspx</link><pubDate>Tue, 14 Dec 2010 14:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10104694</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10104694</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/12/14/powerpivot-teched-2010.aspx#comments</comments><description>&lt;p&gt;2008年，我们与聚集在微软技术大会的IT朋友们分享了商业智能的未来。在讲座中，我们谈到自助式商业智能的愿景。2009年，我们与聚集在微软技术大会的IT 朋友们分享了PowerPivot客户端的功能。&lt;/p&gt;
&lt;p&gt;2010年12月1日- 2010年12月3日，许多IT朋友们聚集在北京参加微软技术大会（Microsoft TechEd China 2010）。在今年的技术大会上，我们与大家探索PowerPivot客户端和服务器端的总体架构。&lt;/p&gt;
&lt;p&gt;当用户使用PivotTable连接到在 Excel 外的数据源（External Data Sources）时，Excel用不同的数据源连接器来做连接。其中，当连接到分析服务器时，Excel用了MSOLAP OLE DB Provider来做连接。在MSOLAP OLE DB Provider的连接字符串，我们提供了分析服务器的名字和连接方式（例如：Server Name， Credentials，等等）。MSOLAP Provider 通过TCP传输来与分析服务器沟通。此外，当连接字符串中有HTTP字符时，MSOLAP Provider 将通过HTTP传输来与安装在服务器的数据泵（data pump）与分析服务器沟通。当连接字符串中指定了部署在Sharepoint Farm中的Excel文件时，MSOLAP Provider也将用HTTP传输。&lt;/p&gt;
&lt;p&gt;介绍了TCP 和HTTP传输后，我们也谈到了一个新的Inproc传输。MSOLAP OLEDB Provider通过Inproc传输来连接到内存中的PowerPivot引擎。嵌入在Excel工作簿中的PowerPivot 数据在打开文件时被恢复到PowerPivot引擎。客户端的PowerPivot 插件用了熟悉的Analysis Management Objects（AMO）和ADOMD.Net来对PowerPivot引擎进行查询和操作。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Components-UserFiles/00-00-12-00-81-Attached+Files/2625.pp01.png" /&gt;&lt;/p&gt;
&lt;p&gt;最后，我们谈到了部署在Sharepoint Farm的PowerPivot。我们介绍了在Sharepoint Farm中的几个PowerPivot的组建。这包括了：PowerPivot Web Service（PWS）和PowerPivot &amp;nbsp;System Service（PSS）。PowerPivot Web Service（PWS）是一个在SharePoint前端的薄中间层。PWS 负责把来自Sharepoint Farm外的请求转发到服务器中的PowerPivot服务程序。我们也谈到了在Sharepoint Farm中，MSOLAP OLEDB Provider如何用Window Communication Foundation（WCF）为基础的Channel运输来与PowerPivot &amp;nbsp;System Service（PSS）沟通。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4428.pp02.png" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;更多参考资源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PowerPivot 客户和服务器端架构：http://download.microsoft.com/download/9/4/8/948776F7-4533-4EB5-A692-77BD0C72A135/PowerPivot%20ClientServer%20Architecture.pdf&lt;/li&gt;
&lt;li&gt;&lt;a href="http://powerpivotgeek.com"&gt;PowerPivot Geek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://powerpivotpro.com"&gt;PowerPivot Pro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;期待2011 年的技术大会！谢谢！&lt;/p&gt;
&lt;p&gt;项目经理 &amp;nbsp;卓伟雄&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10104694" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/TechEd/">TechEd</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/PowerPivot/">PowerPivot</category></item><item><title>应用于数据层开发、部署、升级和管理的标准解决方案——数据层应用程序</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/12/07/teched-dac.aspx</link><pubDate>Tue, 07 Dec 2010 05:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10101180</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10101180</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/12/07/teched-dac.aspx#comments</comments><description>&lt;p&gt;大家好！&lt;/p&gt;
&lt;p&gt;在刚刚结束的Microsoft TechEd 2010，我们通过动手实验，让大家体验了如何使用数据层应用程序（DAC）进行轻松高效准确的数据层开发、部署、升级和管理，并收到了很好的反馈。为了能够和更多的开发人员和数据库管理员介绍和分享DAC，我们特撰文如下，以飨读者。&lt;/p&gt;
&lt;p&gt;对于普通应用程序的部署和升级，大家已经非常熟悉和习惯的使用&lt;a href="http://msdn.microsoft.com/zh-cn/library/e2444w33.aspx"&gt;MSI&lt;/a&gt;或者&lt;a href="http://msdn.microsoft.com/zh-cn/library/e2444w33.aspx"&gt;Click Once&lt;/a&gt;了。那么对于数据层，微软有什么类似的标准而易用的解决方案，可以统一将所需的所有数据库和实例对象（例如，用户表、存储过程、视图、登录等）统一打包，能够对版本，部署和升级条件及策略的声明和控制呢？这就是数据层应用程序（Data-tier Application，DAC）。&lt;/p&gt;
&lt;p&gt;数据层应用程序DAC可使用以下两个工具来实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可使用 Microsoft Visual Studio 2010 中的数据层应用程序项目编写和构建 DAC，并可以进行对 T-SQL 代码运行静态代码分析、重构 T-SQL 代码、声明 版本和部署意向的策略；升级DAC时还可以对数据层应用程序进行架构对比。&lt;/li&gt;
&lt;li&gt;可以使用 SQL Server Management Studio 中的提取数据层应用程序向导从现有的数据库中提取 DAC，或进行DAC的部署、升级和统一管理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;数据层应用程序DAC在软件生命周期中的具体应用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;开发：Visual Studio 2010 中添加了一些新功能和增强功能：
&lt;ul&gt;
&lt;li&gt;全面支持数据层应用程序开发。&lt;/li&gt;
&lt;li&gt;全新的 Transact-SQL 编辑器体验。&lt;/li&gt;
&lt;li&gt;集成式编辑器、调试器、离线和在线 IntelliSense、语言服务和策略设计器。&lt;/li&gt;
&lt;li&gt;静态代码分析和构建服务。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;部署：引入全新的部署单元DAC包（ DACPAC），从而轻松高效准确地从 Visual Studio 2010 和 SQL Server Management Studio 部署和升级数据层应用程序。DACPAC是.zip格式的，其中包含.XML和.SQL文件，以方便浏览和对比。&lt;/li&gt;
&lt;li&gt;管理：SQL Server 2008 R2 引入了 SQL Server 实用工具控制点（SQL Server 实用工具）的概念，极大地简化了多个 SQL Server 实例的管理。您可以采用 SQL Server 实例并将其注册为现有 SQL Server 实用工具，从而同时在实例和应用程序级别监控其性能和配置。这有助于您进行趋势分析，从而提高资源利用率并最终降低成本。详细信息及演示，请参考我们的&lt;a href="http://blogs.msdn.com/b/sqlcrd/archive/2010/05/10/sql-server-utility.aspx"&gt;这篇文章&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4431.dac.png" /&gt;&lt;/p&gt;
&lt;p&gt;更多参考资源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ee210554.aspx"&gt;微软MSDN 中文 SQL Server 2008 R2《数据层应用程序教程》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ee361996.aspx"&gt;微软MSDN 中文 Visual Studio 2010 《创建和管理数据层应用程序》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff381683(SQL.100).aspx"&gt;微软技术白皮书 英文《SQL Server 2008 R2 中的数据层应用程序》&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.microsoft.com/forums/zh-CN/sqlserverzhchs"&gt;微软MSDN 中文 SQL Server论坛&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;谢谢！&lt;/p&gt;
&lt;p&gt;SQL Server软件测试开发工程师 刘春雨&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10101180" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/TechEd/">TechEd</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/DAC/">DAC</category></item><item><title>SQL @ TechEd 2010</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/11/26/sql-teched-2010.aspx</link><pubDate>Fri, 26 Nov 2010 03:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10096855</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10096855</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/11/26/sql-teched-2010.aspx#comments</comments><description>&lt;p&gt;2010微软技术大会将于2010年12月1日至3日在国家会议中心举办。除了&lt;span&gt;Simon Leung &lt;/span&gt;&lt;span lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span&gt;Enwei Xie的&lt;/span&gt;主题演讲之外，&lt;span lang="ZH-CN"&gt;大会将开设&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span lang="ZH-CN"&gt;个动手实验营、&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span lang="ZH-CN"&gt;个分会技术课程共&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span lang="ZH-CN"&gt;个技术分类的近&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span lang="ZH-CN"&gt;场精彩课程演讲。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;按照时间顺序，SQL中国研发团队将贡献如下课程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008 R2 数据压缩的最佳实践技巧和新增功能&amp;nbsp;方峻&lt;br /&gt;&lt;/strong&gt;12/2, 9:45-10:45	分会场八	DAT-300-3&lt;br /&gt;SQL Server 2008 &lt;span lang="ZH-CN"&gt;推出数据压缩后非常受用户欢迎，得到了广泛的采用。本讲座将简单回顾一下数据压缩的功能，然后重点讨论一些常见的客户问题，实践技巧，应用场景和性能影响，并通过这些来帮助您选择什么时候采用哪种压缩技术。之后讲座将介绍&lt;/span&gt;
SQL Server 2008 R2 &lt;span lang="ZH-CN"&gt;上数据压缩的新功能，对&lt;/span&gt; Unicode &lt;span lang="ZH-CN"&gt;字符数据的压缩。&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;如果构建企业级的ETL&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;孙巍&lt;/strong&gt;&lt;br /&gt;12/2, 9:45-10:45	分会场九	BIC-300-3&lt;br /&gt;&lt;span lang="ZH-CN"&gt;数据整合及清洗是企业实现&lt;/span&gt;&lt;span&gt;BI&lt;span lang="ZH-CN"&gt;的必要步骤，生成及输出的数据是&lt;/span&gt;BI&lt;span lang="ZH-CN"&gt;系统的数据基石。微软的&lt;/span&gt;SQL
Server Integration Service（SSIS）&lt;span lang="ZH-CN"&gt;提供了一套完整的&lt;/span&gt;ETL&lt;span lang="ZH-CN"&gt;解决方案，不但从功能上满足了整合及清理的要求，还提供了强大的流程控制及扩展功能。企业级&lt;/span&gt;ETL&lt;span lang="ZH-CN"&gt;解决方案不但要考虑转换功能实现，更多的是要考虑流程、性能、可管理性、可扩展性。本讲座将从企业对于&lt;/span&gt;ETL&lt;span lang="ZH-CN"&gt;解决方案的需求开始完整的阐述如何使用&lt;/span&gt;SSIS&lt;span lang="ZH-CN"&gt;实现企业级&lt;/span&gt;ETL&lt;span lang="ZH-CN"&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server Cluster 多子网支持和新的故障检测机制&amp;nbsp;何民&lt;/strong&gt;&lt;br /&gt;12/2, 11:00-12:00	分会场二	DAT-300-4&lt;br /&gt;课程由两部分组成：（一）SQL Server &lt;span lang="ZH-CN"&gt;多子网故障转移集群&lt;/span&gt;（multi-subnet
failover clustering）&lt;span lang="ZH-CN"&gt;可用于部署高可用系统之上的灾难恢复系统。本讲座将介绍多子网集群概念，和&lt;/span&gt;V-LAN&lt;span lang="ZH-CN"&gt;解决方案的比较及部署的最佳实践。（二）&lt;/span&gt;&lt;span lang="ZH-CN"&gt;即将发布的&lt;/span&gt;SQL Server &lt;span lang="ZH-CN"&gt;下一版本中，故障转移集群使用了 全新的故障检测机制。这一部分讲座包含对新的系统存储过程&lt;/span&gt;sp_server_diagnostics&lt;span lang="ZH-CN"&gt;的介绍， 新的故障检测机制与&lt;/span&gt;SQL Server 2008 R2 &lt;span lang="ZH-CN"&gt;之前版本的故障检测机制的对比，如何定制故障条件级别，以及演示。&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008 R2/PowerPivot探秘&amp;nbsp;卓伟雄&lt;/strong&gt;&lt;br /&gt;12/2, 14:30-15:30	分会场九	BIC-400-1&lt;br /&gt;&lt;span lang="ZH-CN"&gt;在这个讲座&lt;/span&gt;&lt;span&gt;中，&lt;span lang="ZH-CN"&gt;我们将深入探讨&lt;/span&gt; PowerPivot &lt;span lang="ZH-CN"&gt;的架构，&lt;/span&gt;PowerPivot&lt;span lang="ZH-CN"&gt;的&lt;/span&gt;Excel &lt;span lang="ZH-CN"&gt;插件，和不同的组件。我们也会谈到这些组件之间如何沟通。在服务器端，我们将谈到&lt;/span&gt; PowerPivot &lt;span lang="ZH-CN"&gt;如何应用&lt;/span&gt; SharePoint 2010 &lt;span lang="ZH-CN"&gt;的共同服务架构，如何连接到&lt;/span&gt;Powerpivot
&lt;span lang="ZH-CN"&gt;的数据，如何做数据更新， 和创建报表中的缩略图。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft云端数据库的最新进展和前景&amp;nbsp;吴家震&lt;/strong&gt;&lt;br /&gt;12/2, 15:45-16:45	分会场三	DAT-300-6&lt;br /&gt;&lt;span lang="ZH-CN"&gt;云计算是最近几年&lt;/span&gt;&lt;span&gt;IT&lt;span lang="ZH-CN"&gt;行业的最大，最根本的一场变革，最终实现计算资源可以象其它如水电等公共资源一样随要随取，按需使用。&lt;/span&gt;Microsoft&lt;span lang="ZH-CN"&gt;和&lt;/span&gt;SQL Server&lt;span lang="ZH-CN"&gt;部门正在领导云端数据库的变革，此讲座将介绍云端数据库的基本构架，最新进展和功能，以及其未来前景。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data integration&amp;nbsp;赵晓燕&lt;/strong&gt;&lt;br /&gt;12/2, 15:45-16:45	分会场九	BIC-200-3&lt;br /&gt;&lt;span lang="ZH-CN"&gt;数据集成&lt;/span&gt;&lt;span&gt;（Data Integration）&lt;/span&gt;&lt;span lang="ZH-CN"&gt;有很多应用场景，如构建数据仓库、&lt;/span&gt;&lt;span lang="ZH-CN"&gt; &lt;/span&gt;&lt;span lang="ZH-CN"&gt;实现主数据管理、&lt;/span&gt;&lt;span lang="ZH-CN"&gt; &lt;/span&gt;&lt;span lang="ZH-CN"&gt;获取数据同步和一致性、&lt;/span&gt;&lt;span lang="ZH-CN"&gt; &lt;/span&gt;&lt;span lang="ZH-CN"&gt;系统迁移或整合&lt;/span&gt;&lt;span lang="ZH-CN"&gt; &lt;/span&gt;&lt;span lang="ZH-CN"&gt;以及&lt;/span&gt;&lt;span&gt;B2B
&lt;/span&gt;&lt;span lang="ZH-CN"&gt;数据采集和共享等等。同时数据集成也有多种不同技术方法：大容量或批处理、&lt;/span&gt;&lt;span&gt; Federated&lt;/span&gt;&lt;span lang="ZH-CN"&gt;查询、&lt;/span&gt;&lt;span lang="ZH-CN"&gt; &lt;/span&gt;&lt;span lang="ZH-CN"&gt;数据复制和消息或事件移动。&lt;/span&gt;&lt;span&gt;Microsoft&lt;/span&gt;&lt;span lang="ZH-CN"&gt;拥有多种产品可解决或部分解决数据集成问题，包括&lt;/span&gt;&lt;span&gt;Microsoft SQL Server Integration Services（SSIS）&lt;/span&gt;&lt;span lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span&gt;SQL Server Service
Broken（&lt;/span&gt;&lt;span lang="ZH-CN"&gt;服务中介程序&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span&gt;SQL Server
Replication&lt;/span&gt;&lt;span lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span&gt;
Distributed Query（&lt;/span&gt;&lt;span lang="ZH-CN"&gt;分布查询&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span lang="ZH-CN"&gt;、&lt;/span&gt;&lt;span&gt;Microsoft BizTalk Server&lt;/span&gt;&lt;span lang="ZH-CN"&gt;和&lt;/span&gt;&lt;span&gt;Microsoft Master Data
Services（&lt;/span&gt;&lt;span lang="ZH-CN"&gt;主数据服务&lt;/span&gt;&lt;span&gt;）&lt;/span&gt;&lt;span lang="ZH-CN"&gt;。虽然单一产品不能解决所有数据集成问题，但这些产品的组合完全可以解决您的需求。本讲演将概述数据集成问题的类型和技术方法，并介绍在哪些情况下使用&lt;/span&gt;&lt;span&gt;Microsoft&lt;/span&gt;&lt;span lang="ZH-CN"&gt;何种产品或产品组合以现实您的数据集成需求。&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 性能优化（Performance Optimization）&amp;nbsp;殷皓&lt;/strong&gt;&lt;br /&gt;12/3, 9:00 - 10:00	分会场二	DAT-300-1&lt;br /&gt;SQL Server &lt;span lang="ZH-CN"&gt;关系型数据库平台性能优化的简介：从查询&lt;/span&gt;(SQL
&lt;span lang="ZH-CN"&gt;语句&lt;/span&gt;)&lt;span lang="ZH-CN"&gt;，到系统资源等各方面评估瓶颈，用系统化的方式来监控并解决解决系统性能问题。&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;微软的数据仓库全线解决方案：SQL Server 2008R2/PDW/Fasttrack&amp;nbsp;杨海俊&lt;/strong&gt;&lt;br /&gt;12/3, 9:00 - 10:00	分会场三	BIC-300-4&lt;br /&gt;SQL Server Fast Track Data Warehouse &lt;span lang="ZH-CN"&gt;基于&lt;/span&gt;
SQL Server &lt;span lang="ZH-CN"&gt;企业版实现向上扩展，提供一个高性能、企业级的数据仓库平台&lt;/span&gt;（&lt;span lang="ZH-CN"&gt;高达&lt;/span&gt;48TB）&lt;span lang="ZH-CN"&gt;而无需传统系统所需要的高成本。&lt;/span&gt;Microsoft&amp;reg; SQL
Server&amp;reg; 2008 R2 &lt;span lang="ZH-CN"&gt;并行数据仓库具备很强的可伸缩性，可以通过大规模并行计算（&lt;/span&gt;Massively
Parallel Processing, MPP&lt;span lang="ZH-CN"&gt;）架构，以很低的成本实现很高的性能，数据仓库的规模从数十&lt;/span&gt;TB&lt;span lang="ZH-CN"&gt;扩展到数百&lt;/span&gt;TB&lt;span lang="ZH-CN"&gt;。&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2011 数据库应用开发新增功能预览&amp;nbsp;方峻&lt;/strong&gt;&lt;br /&gt;12/3, 10:15-11:15	分会场八	DAT-300-2&amp;nbsp;&lt;br /&gt;&lt;span lang="ZH-CN"&gt;本讲座将介绍&lt;/span&gt;&lt;span&gt; SQL Server 2011（Denali）&lt;span lang="ZH-CN"&gt;在数据库应用程序开发上所提供的新功能。首先，&lt;/span&gt;SQL
Server 2011 &lt;span lang="ZH-CN"&gt;在&lt;/span&gt;T-SQL&lt;span lang="ZH-CN"&gt;编程上提供了一系列的新功能，包括&lt;/span&gt;
Paging、Sequence、Language Service、&lt;span lang="ZH-CN"&gt;错误处理，描述结果集的&lt;/span&gt;
metadata&lt;span lang="ZH-CN"&gt;，等等，让&lt;/span&gt; T-SQL &lt;span lang="ZH-CN"&gt;应用程序开发更简单有效。之后，讲座将详细讲解&lt;/span&gt;
FileTable&lt;span lang="ZH-CN"&gt;。&lt;/span&gt;FileTable &lt;span lang="ZH-CN"&gt;建立与&lt;/span&gt;
FileStream &lt;span lang="ZH-CN"&gt;基础之上，同时提供丰富的文件系统服务，使得您将文件存储在数据库中之后，仍旧保持完整的目录结构，并且可以用现有的程序（如&lt;/span&gt;
Word、Excel、Explorer）&lt;span lang="ZH-CN"&gt;直接打开这些文件或目录。系统提供文件和数据库的完全整合，及数据库上的所有服务，使得结构性数据和非结构性数据的统一管理更加简单，查询更加丰富。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深入SQL Server 2008 R2报表服务新功能开发&amp;nbsp;陶然&lt;/strong&gt;&lt;br /&gt;12/3, 14:00-15:00	分会场八	BIC-300-1&lt;br /&gt;SQL Server 2008 R2&lt;span lang="ZH-CN"&gt;对报表服务的功能做了很大的增强&lt;/span&gt;，&lt;span lang="ZH-CN"&gt;不仅加入了报表部件&lt;/span&gt;、&lt;span lang="ZH-CN"&gt;火花线和指示器等&lt;/span&gt;，&lt;span lang="ZH-CN"&gt;更加入了免费的地图报表开发的支持&lt;/span&gt;，&lt;span lang="ZH-CN"&gt;从此可以快速的开发更加丰富和多样化的数据报表&lt;/span&gt;，&lt;span lang="ZH-CN"&gt;为商务智能服务&lt;/span&gt;。&lt;span lang="ZH-CN"&gt;本次课程讲为听众讲解并展示这些新功能的特性和开发过程&lt;/span&gt;，&lt;span lang="ZH-CN"&gt;来帮助大家在实际项目中可以熟练使用&lt;/span&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 与SQL Azure云数据库之间的数据无缝迁移&amp;nbsp;李刚毅，范志华&lt;/strong&gt;&lt;br /&gt;12/3, 15:15-16:15	分会场八	DAT-300-5&lt;br /&gt;&lt;span lang="ZH-CN"&gt;您是否正在寻找将您的数据库从M&lt;/span&gt;&lt;span&gt;ySQL&lt;span lang="ZH-CN"&gt;数据库或其他数据库迁移到&lt;/span&gt;SQL Azure？&lt;span lang="ZH-CN"&gt;或者用最简单的方法把&lt;/span&gt;SQL
Server&lt;span lang="ZH-CN"&gt;数据库上载到&lt;/span&gt;SQL Azure？&lt;span lang="ZH-CN"&gt;在本讲座中，我们将通过数据访问层和数据层分别为您展示如何实现这种迁移。我们会为您分析和解决迁移过程中的常见问题，并向您介绍可以帮助您顺利完成迁移工作的各种实用工具。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;从小众到大众&amp;mdash;&amp;mdash;医疗行业商务智能系统发展浅谈&amp;nbsp;朱宁&lt;/strong&gt;&lt;br /&gt;12/3, 16:30-17:30	分会场八	BIC-200-1&lt;br /&gt;&lt;span lang="ZH-CN"&gt;商务智能系统&lt;/span&gt;&lt;span&gt;2005&lt;span lang="ZH-CN"&gt;年作为一个新兴词汇出现在医疗行业，短短&lt;/span&gt;5&lt;span lang="ZH-CN"&gt;年医院商务智能在我院从几个人用的&amp;ldquo;豪华报表&amp;rdquo;发展成为每个人都能够用到的自助式&lt;/span&gt;BI&lt;span lang="ZH-CN"&gt;，从赶时髦的作秀到真正为医院管理、临床、科研提供数据平台、分析工具与决策依据。本文将针对微软商务智能解决方案在医院的应用领域、技术平台、推广模式、实施方法进行详尽阐述。旨在能够让更多医院体会商务智能能带给医院管理与发展上的价值，提高商务智能项目实施的成功率与效率。&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外，按照时间顺序,，SQL中国研发团队还将贡献如下动手实验营：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008 R2地图报表 (200)&amp;nbsp;王琦&lt;/strong&gt;&lt;br /&gt;12/2, 8:30 - 9:30 &amp;nbsp;动手实验室三&amp;nbsp;DATHOL-200-3&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深入理解SQL2008 R2中的集成服务 (200)&amp;nbsp;孙昆 邓子睿&lt;/strong&gt;&lt;br /&gt;12/2, 8:30 - 9:30&amp;nbsp;动手实验室六	BICHOL-200-2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008 R2 和Visual Studio 2010 中的数据层应用（Data-tier Application）(200)&amp;nbsp;刘春雨 毛草&lt;/strong&gt;&lt;br /&gt;12/2, 11:00 - 12:00	动手实验室六	DATHOL-200-1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008 R2 故障转移群集维护大法 (200)&amp;nbsp;赵振宇 曾屹&lt;/strong&gt;&lt;br /&gt;12/2, 13:15-14:15	动手实验室三	DATHOL-200-2&lt;span style="font-weight: bold;"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基于SQL Server 2008 R2 Reporting Services的报表库的使用和开发 吴穷 赖爱民&lt;br /&gt;&lt;/strong&gt;12/3, 9:00 - 10:00&lt;span&gt;	&lt;/span&gt;动手实验室&lt;span&gt;&amp;nbsp;&lt;/span&gt;BICHOL-200-1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用SQL Server PowerPivot for Excel 2010创建数据报表 (200)&amp;nbsp;郭亚涛&amp;nbsp;&lt;/strong&gt;&lt;span class="font5"&gt;&lt;strong&gt;李瑞霞&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;12/3, 15:00-16:00&lt;span&gt;	&lt;/span&gt;动手实验室六&lt;span&gt;	&lt;/span&gt;BICHOL-200-3&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用StreamInsight事件流调试器 (300)&amp;nbsp;刘星宇 曲艺&lt;br /&gt;&lt;/strong&gt;12/3, 16:15-17:15&lt;span&gt;	&lt;/span&gt;动手实验室六&lt;span&gt;	&lt;/span&gt;DATHOL-300-1&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;不见不散！&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10096855" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/TechEd/">TechEd</category></item><item><title>被“自由行动祝福”环绕的战士——微软实习之魔兽攻略版</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/10/08/10073162.aspx</link><pubDate>Fri, 08 Oct 2010 07:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10073162</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10073162</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/10/08/10073162.aspx#comments</comments><description>&lt;p&gt;&amp;ldquo;被人绑着推到竞技场里，和自己昂首挺胸迈进去是完全不同的。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;不同于何处？被动与主动。&lt;/p&gt;
&lt;p&gt;前者被迫走进竞技场，只能在别人的指挥下去拿指定的武器，根据指令这样进攻那样防守。而自己迈入场地的人，每一步都是自己的选择，可以拿自己最擅长的武器，使用最得心应手的战术。&lt;/p&gt;
&lt;p&gt;只有你自己才知道挥舞刀剑和吟唱魔法哪个更得心应手；正面对抗和以智取胜哪个更擅长。要是一个法师不得不去冲锋肉搏，那他的魔法值不就完全浪费了么。而一个战士只有拿起双手剑，才能去打一场漂亮的战斗。&lt;/p&gt;
&lt;p&gt;这些与在微软实习有什么关系呢？&lt;/p&gt;
&lt;p&gt;你一定曾听说在微软实习有喝不完的酸奶，可以随意着装，办公楼里的台球桌、乒乓桌、XBox随时恭候。隐藏在这些表象背后的是一种公司文化 &amp;mdash;&amp;mdash;&amp;ldquo;自由&amp;rdquo;。而&amp;ldquo;自由&amp;rdquo;的公司文化除了让人在工作的时候爽一点，还有什么呢？让我们继续之前那个挥舞双手剑的战士的故事&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;p&gt;即使战士擅长剑术、战术成熟，也可能在战斗中被猎人的陷阱困住，被法师的寒冰箭减速，以致无法接近对手，难以按自己原先的想法战斗，发挥出一身本领。这时，如果有一个圣骑士能给这个战士加上一个&amp;ldquo;自由行动祝福&amp;rdquo;【注：&amp;ldquo;自由行动祝福&amp;rdquo;可以使目标免疫一切限制移动效果】，那战士就能变得不可阻挡、所向披靡。&lt;/p&gt;
&lt;p&gt;如果说实习生是这个战士，微软就是那个可以给他施放&amp;ldquo;自由行动祝福&amp;rdquo;的圣骑士。微软是一个可以让人自由发挥的平台，在这里可以真正随心所欲地工作、学习。让你不会由于外界的限制，导致自己的选择失去了意义。对于一个实习生来说，如何体会到这种&amp;ldquo;自由&amp;rdquo;呢？&lt;/p&gt;
&lt;p&gt;也许你在一家公司的实习经历会是这样的&amp;hellip;&amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;领过一堆魔法卷轴，被告知要把这些法术学会；&lt;/li&gt;
&lt;li&gt;被告知用刚学的魔法完成一项简单任务；&lt;/li&gt;
&lt;li&gt;完成任务后，会被指出有哪些不足之处，还要研习哪些高一级的魔法；&lt;/li&gt;
&lt;li&gt;然后接到另外一项任务，在任务中提高你的魔法技能。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然而，&amp;ldquo;杯具&amp;ldquo;的你从来对所学的魔法没有丝毫兴趣。几个月下来，既不开心，也没学到什么想学的东西。&lt;/p&gt;
&lt;p&gt;而在微软就不同，你完全可以这样&amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;告诉老板和导师&amp;ldquo;我是个战士，我擅长用双手剑战斗&amp;rdquo;。&lt;/li&gt;
&lt;li&gt;在导师的指导下选择一项能发挥你优势且收益较大的任务，拿起手中的剑去执行任务。&lt;/li&gt;
&lt;li&gt;和周围的人探讨战斗技巧，请教怎样挥舞你的剑才能发挥最大威力。&lt;/li&gt;
&lt;li&gt;背上你已练得娴熟的【角斗士的双手巨刃】，开始自己的征程。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只有在这样的环境下，一个战士才能成长与进步。&lt;/p&gt;
&lt;p&gt;在不少公司里，实习生往往是一个被动的角色，所要做的就是接受并且执行一条条由上至下的指令。而微软的实习生可以一边学习各种技能、一边埋头于自己感兴趣的项目。微软并不仅仅是&amp;ldquo;雇佣&amp;rdquo;实习生来打工，同时也在培养实习生的自主能力，这里有着充足的学习资源，找到所有感兴趣的微软产品和技术。&lt;/p&gt;
&lt;p&gt;若在做任务时遇到问题，你可以使用微软内部的Wiki查找你想要的信息；也可以向你身旁的同事请教；或是发邮件给&amp;ldquo;I Dunno!&amp;rdquo;（微软的群邮地址），那里会有High-Level的家伙为你指点迷津。&lt;/p&gt;
&lt;p&gt;要是想提高你的&amp;ldquo;剑术&amp;rdquo;水平，你可以去参加Tech Talk（技术讲座）或看网上讲座视频，那里有人介绍最新的技术、技巧；在微软的电子图书馆里寻找你的&amp;ldquo;双手剑高阶指导&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;如果想从他人的经历中激发对自己职业规划的思考，你可以给导师或老板发Meeting Request（会议邀请），问问他们是如何从一个小战士成长为一名角斗士的，他们绝不会吝惜将自己成功的经验分享给你。&lt;/p&gt;
&lt;p&gt;回想在微软实习半年的收获，我发现最有价值的是我在自由祝福的照耀下，体验了按自己的意愿迈出每一步的快乐，学会了如何去自主地做决定、做事情。有了&amp;ldquo;自由行动祝福&amp;rdquo;的环绕，可以少绕很多弯路，少遇到很多绊脚石，就像舞动着一双自由之翼，可以更快地触碰到眩目的天空。&lt;/p&gt;
&lt;p&gt;软件测试开发工程师实习生 &amp;nbsp;曹书宇&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10073162" width="1" height="1"&gt;</description></item><item><title>SQL Server 2008 R2新产品介绍——主数据服务</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/09/02/sql-server-2008-r2-master-data-service.aspx</link><pubDate>Thu, 02 Sep 2010 04:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10057106</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10057106</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/09/02/sql-server-2008-r2-master-data-service.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;为什么需要主数据服务（Master Data Service ，MDS）?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在信息化的时代，企业每天都需要处理海量的事务数据。 如何保障这些海量数据的准确性和安全性成为企业数据管理的重要问题。微软SQL Server 2008 R2 发布的新产品&amp;mdash;&amp;mdash;主数据服务（MDS）提供了有效的机制来帮助企业解决这个问题。&lt;/p&gt;
&lt;p&gt;主数据是什么？主数据是企业的基础的、关键的业务数据。比如企业的产品信息、供应商信息、客户信息、人力资源数据等等。主数据的准确与否，决定着企业海量业务数据的是否有效。管理好这些主数据是进行海量数据处理的关键组成部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MDS概要介绍&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;企业的主数据按照实体、模块的方式存储在MDS数据库中。相互联系的实体存放在相同的主数据模块中。实体的属性是主数据存取和安全性管理的最小数据单元。在日常事务流水中，这些最小的数据单元精确的描述和刻画着事务的具体内容。同时在MDS中，可以对这些主数据进行组装和搭配，形成高级的主数据管理单元。这些功能分别在MDS的以下组成部分中实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统管理工具：定义主数据的存储结构&lt;/li&gt;
&lt;li&gt;资源管理器：展示和管理主数据的内容&lt;/li&gt;
&lt;li&gt;安全性管理模块：定义主数据单元的存取权限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MDS同时提供了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;版本管理工具：维护和管理企业历史上不同时期的主数据&lt;/li&gt;
&lt;li&gt;数据集成工具：与已有的系统进行主数据的导入和导出&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;微软新产品介绍：&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/MDS.aspx"&gt;http://www.microsoft.com/sqlserver/2008/en/us/MDS.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MDS 应用程序开发人员参考资料：&lt;a href="http://msdn.microsoft.com/en-us/library/ee633763.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee633763.aspx&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;MDS&amp;nbsp; 博客：&lt;a href="http://blogs.msdn.com/mds/"&gt;http://blogs.msdn.com/mds/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;TechNet技术指引视频：&lt;a href="http://technet.microsoft.com/zh-cn/ff959218.aspx"&gt;http://technet.microsoft.com/zh-cn/ff959218.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;软件测试工程师 郝勇&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #999999;"&gt;作为技术指引，本片首先概要的介绍了什么是Master Data和Master Data Service，然后简明地演示了微软SQL Server Master Data Service所提供的主要功能。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #999999;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center" id="video_10057106"&gt;&lt;a href="http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20100827_Overview.wmv"&gt;&lt;img src="/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/0184.MDS.png" border = "0" width="500" height="400"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href = "http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20100827_Overview.wmv"&gt;View Video&lt;/a&gt;&lt;br /&gt;Format: wmv&lt;br /&gt;Duration: 3&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10057106" width="1" height="1"&gt;</description><enclosure url="http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20100827_Overview.wmv" length="0" type="video/x-ms-wmv" /><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Master+Data+Service/">Master Data Service</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/MDS/">MDS</category></item><item><title>浅谈SQL Server 2008 R2 中的新组件——StreamInsight</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/28/introduction-sql-server-2008-r2-streaminsight.aspx</link><pubDate>Mon, 28 Jun 2010 02:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10031298</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10031298</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/28/introduction-sql-server-2008-r2-streaminsight.aspx#comments</comments><description>&lt;p&gt;随着信息技术的广泛应用，数据流作为一种新颖的数据结构在日常生活中有着越来越广泛的应用，微软在SQL Server 2008 R2 中推出了分析处理数据流的新组件&amp;mdash;&amp;mdash;StreamInsight。它提供了基于DotNet框架的开发环境，用户能够轻松地使用它来开发出健壮，高效地数据流处理程序。&lt;/p&gt;
&lt;p&gt;StreamInsight的本质是复杂事件处理（Complex Event Processing，CEP）的应用程序框架，与传统的数据库查询处理不同，事件处理系统需要同时处理来自多个数据源的海量事件（Event），并且根据用户提供的查询语句以及匹配模式，实时地输出事件分析结果。我们在下表中列出了事件驱动应用和数据库应用的主要区别：&lt;/p&gt;
&lt;table border="1" style="width: 476px; height: 88px;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;数据库应用&lt;/td&gt;
&lt;td&gt;事件驱动的应用（Event Driven）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;查询模式&lt;/td&gt;
&lt;td&gt;特定的查询请求&lt;/td&gt;
&lt;td&gt;连续的查询&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;响应时间&lt;/td&gt;
&lt;td&gt;从几秒至数天&lt;/td&gt;
&lt;td&gt;几毫秒或更少&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数据流量&lt;/td&gt;
&lt;td&gt;数百条记录/秒&lt;/td&gt;
&lt;td&gt;&amp;gt;10000 事件/秒&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;通过使用StreamInsight，用户可以开发出基于CEP的程序来实时处理大量的原始数据，利用数据之间的层次和关联关系，有效的采用相应的规则进行处理，以降低进行事件分析，事件关联及事件解析等操作的代价。StreamInsight同时能够支持对数据流模式匹配、异常检测、趋势分析等操作，使用户能够更好地管理、监控和挖掘数据，最终使用户得到之前无法了解的信息，并能够更快速和更有效的进行操作决策，提高关键绩效指标（KPI）。&lt;/p&gt;
&lt;p&gt;在StreamInsight的应用中，其核心为StreamInsight服务器，它主要由输入，输出适配器（Adaptor）以及CEP引擎（CEP Engine）组成。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CEP引擎（CEP Engine）：所有的输入数据都将再CEP引擎中进行分析和处理，它根据用户定义的查询逻辑，有效地分析和转换输入的数据，并及时输出结果。&lt;/li&gt;
&lt;li&gt;适配器（Adaptor）：StreamInsight提供了适配器的框架，开发者能够通过实现不同的接口来开发不同种类的适配器。适配器分为两类，输入适配器（Input Adaptor）是连接外部存储设备如网络服务器，传感器同StreamInsight引擎的接口。而输出适配器则用于处理CEP引擎输出的结果并可以同时触发一系列的操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下图给出了StreamInsight应用的整体结构：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/3666.StreamInsight.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;StreamInsight平台提供了一个功能强大的对象模型，它包含了许多有用的特性使得我们能够开发出灵活和功能强大StreamInsight的程序。对于初次使用StreamInsight的开发者来说，参考网上的一些&lt;a href="http://streaminsight.codeplex.com/"&gt;实例&lt;/a&gt;能够取得事半功倍的效果。&lt;/p&gt;
&lt;p&gt;在我加入微软之前，也曾进行过一段时间的数据流研究，当时的感受是，由于没有很好的数据流开发框架，我需要对于不同的应用开发不同的数据流程序来分析算法的有效性，而随着StreamInsight的推出，不仅能够为企业用户创造很大的价值，普通研究者也能够使用它更有效地开展研究工作。&lt;/p&gt;
&lt;p&gt;StreamInsight的相关组件可以在&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx#download"&gt;微软网站&lt;/a&gt;上直接下载，如果您需要获得更多的信息，请访问微软StreamInsight的相关&lt;a href="http://msdn.microsoft.com/en-us/library/ee362541.aspx"&gt;网站&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;span lang="JA" style="font-family: 'MS PGothic','sans-serif'; font-size: 10pt; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma; mso-ansi-language: EN-US; mso-fareast-language: JA; mso-bidi-language: AR-SA;"&gt;软件开发工程师 李人和&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10031298" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>SQL Server 2008 R2新特性——报表部件视频教学</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/18/sql-server-2008-r2.aspx</link><pubDate>Fri, 18 Jun 2010 03:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10026821</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10026821</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/18/sql-server-2008-r2.aspx#comments</comments><description>&lt;p&gt;SQL Server 2008 R2的报表服务为客户提供了更好的报表设计和协作体验。其中报表部件集使得客户可以方便的共享和重用报表部件。在本期视频中，我们将和大家分享报表生成器3.0中报表部件集的使用。该视频也能在&lt;a href="http://technet.microsoft.com/zh-cn/ff727982.aspx"&gt;TechNet IT影城&lt;/a&gt;找到。&lt;/p&gt;
&lt;p&gt;软件开发测试工程师 吴晓晨&lt;/p&gt;&lt;p align="center" id="video_10026821"&gt;&lt;a href="http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20100603_reportform.wmv"&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/3362.reporting.PNG" border = "0" width="500" height="400"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href = "http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20100603_reportform.wmv"&gt;View Video&lt;/a&gt;&lt;br /&gt;Format: wmv&lt;br /&gt;Duration: 4&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10026821" width="1" height="1"&gt;</description><enclosure url="http://wm.microsoft.com/ms/china/technet/howtovideo/sqlserver2008/20100603_reportform.wmv" length="0" type="video/x-ms-wmv" /></item><item><title>SQL Server 2008 R2 StreamInsight简介</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/17/sql-server-2008-r2-streaminsight.aspx</link><pubDate>Thu, 17 Jun 2010 08:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10026310</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10026310</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/17/sql-server-2008-r2-streaminsight.aspx#comments</comments><description>&lt;p&gt;作为SQL Server 2008 R2一个主要的部分，StreamInsight提供了复杂事件处理（Complex Event Processing，CEP）功能。它处理的对象是例如证券交易行情、物联网、医疗监护等数量巨大并且需要实时处理的复杂事件。&lt;/p&gt;
&lt;p&gt;从体系结构上看，StreamInsight类似于一个基于内存的数据库系统。它通过输入适配器接收事件并保存在内存里面。然后通过LINQ对输入事件进行处理得到结果，用于进一步的处理。StreamInsight的LINQ扩展提供了丰富的功能，包括过滤、分组、汇总、连接等常见的SQL功能，和窗口切分这样比较特殊的功能。&lt;/p&gt;
&lt;p&gt;窗口切分是CEP系统和一般DBMS不太一样的一个地方。它用于把一个无限长的输入流转换成为一个一个有限的集合，从而可以方便的进行处理。StreamInsight提供多种窗口切分支持，以适应不同的应用场景需要。例如下面的LINQ查询代码采用了数量为2的计数窗口进行切分，计算后面一个事件相对于前面一个事件的变化值。&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;var&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; deltas = &lt;span style="color: blue;"&gt;from&lt;/span&gt; e &lt;span style="color: blue;"&gt;in&lt;/span&gt; inputstream&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;group&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; e &lt;span style="color: blue;"&gt;by&lt;/span&gt; e.DeviceId &lt;span style="color: blue;"&gt;into&lt;/span&gt; eachGroup&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;from&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; win &lt;span style="color: blue;"&gt;in&lt;/span&gt; eachGroup.CountByStartTimeWindow(2, &lt;span style="color: #2b91af;"&gt;CountWindowOutputPolicy&lt;/span&gt;.PointAlignToWindowEnd)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt; mso-layout-grid-align: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: Consolas; color: blue; font-size: 9.5pt;"&gt;select&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; { ValueDelta = win.Delta(e =&amp;gt; e.Value), SourceID = eachGroup.Key };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;p class="MsoNormal"&gt;
&lt;p class="MsoNormal"&gt;此外，StreamInsight还提供了事件流程调试器，它对于了解事件引擎的内部处理流程、开发和调试应用都有很大的帮助。&lt;/p&gt;
&lt;p class="MsoNormal"&gt;和其他微软产品一样，StreamInsight虽然功能很复杂很强大，但是非常容易使用。你可以按照下面的步骤很快把它提供的例子运行起来，开始你的CEP应用之旅。&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下载StreamInsight试用版（大小大约是14MB），安装到你的机器上。安装的时候，实例名栏目输入Default。你不需要安装任何的SQL Server实例；&lt;/li&gt;
&lt;li&gt;打开Microsoft StreamInsight程序组，点击StreamInsight Samples，下载例子代码并展开；&lt;/li&gt;
&lt;li&gt;启动Visual Studio 2008或者2010，打开StreamInsightProductTeamSamples\Applications\ComposingQueries\ ComposingQueries.sln；&lt;/li&gt;
&lt;li&gt;打开成功以��，按F7编译，然后Ctrl+F5就可以运行了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;更多的知识，请参考Microsoft StreamInsight程序组里面提供的文档或者查阅无联网。&lt;/p&gt;
&lt;p&gt;参考资料&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;SQL Server 2008 R2数字之旅，&lt;a href="http://www.microsoft.com/sqlserver/tour/zh/cn/videos/stream-insight-complex-event-processing.aspx"&gt;http://www.microsoft.com/sqlserver/tour/zh/cn/videos/stream-insight-complex-event-processing.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;下载StreamInsight试用版, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=54ad6107-c552-4d47-b1a1-3f66460f71a9&amp;amp;displaylang=zh-cn"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=54ad6107-c552-4d47-b1a1-3f66460f71a9&amp;amp;displaylang=zh-cn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SQL Server 2008 R2 StreamInsight, &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx"&gt;http://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LINQ, &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx"&gt;http://msdn.microsoft.com/en-us/netframework/aa904594.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你想进一步了解SQL Server 2008 R2的一些新功能，请继续关注SQL CRD的博客。&lt;/p&gt;
&lt;p&gt;软件工程师&amp;nbsp;苏宏谋&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10026310" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/StreamInsight/">StreamInsight</category></item><item><title>SQL Server 2008 R2报表服务之地图向导</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/02/sql-server-2008-r2-reporting-service-map-wizard.aspx</link><pubDate>Wed, 02 Jun 2010 14:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10018857</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10018857</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/06/02/sql-server-2008-r2-reporting-service-map-wizard.aspx#comments</comments><description>&lt;p&gt;SQL Server 2008 R2地图向导是Report builder3.0中内嵌的用于导入地图、创建地图、编辑地图以及发布地图的一套可视化的工具。使用地图向导，用户可以轻松地制作出地图相关的报表，并发布供重用。相比于之前需要靠第三方插件的方法，地图向导在便捷性、灵活性、兼容性等多个方面都有了巨大的优势。&lt;/p&gt;
&lt;p&gt;下面将详细介绍地图向导的强大功能。准备数据使用地图向导，必须首先有如下信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;空间数据源。&lt;/strong&gt;提供空间数据的源的位置或连接，例如，包含空间数据的 SQL Server 实例和数据库的名称，或是Environmental Systems Research Institute, Inc. (ESRI) 形状文件的名称。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;空间数据。&lt;/strong&gt;来自空间数据源，是包含用于指定位置的一系列坐标的字段。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分析数据。&lt;/strong&gt;用于改变地图显示的分析数据，例如，年度商店销售额。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;匹配字段。&lt;/strong&gt;定义空间数据和分析数据之间关系的匹配字段，例如，唯一标识每个城市的地区和城市的名称。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;空间数据用于显示地图，分析数据用于区分显示地图区域，匹配字段用于将分析数据和空间数据关联起来。&lt;/p&gt;
&lt;p&gt;ESRI形状文件是一个文件集，其中的数据符合Environmental Systems Research Institute, Inc. (ESRI) 形状文件空间数据格式。该文件集通常包含&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;.shp 文件（包含空间数据）和一个支持文件&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;&lt;filename&gt;&lt;/filename&gt;.dbf。&lt;/p&gt;
&lt;p&gt;当您将形状文件指定为空间数据源而该文件位于您的本地计算机中时，空间数据将自动嵌入到报表中。若要动态使用ESRI文件中的空间数据，必须执行以下操作：在Report Builder 3.0中，将.shp文件及.dbf文件同时上载到报表服务器上的同一文件夹，然后链接到作为空间数据源的.shp 文件。&lt;/p&gt;
&lt;p&gt;可以通过如下链接或者是其他网络地址获得空间数据。&lt;/p&gt;
&lt;p&gt;分析数据可以来自报表数据集，也可能随地图库或ESRI形状文件中的某个地图的空间数据附带。对于随形状文件附带的分析数据，需要使用工具导入到数据库，供后面创建带有分析数据的地图使用。常用的导入工具比如SqlSpatialTools等。&lt;/p&gt;
&lt;p&gt;创建地图可以创建地图的方法和地图种类有很多，这里只介绍其中一种。&lt;/p&gt;
&lt;p&gt;1、打开Report Builder3.0。&lt;/p&gt;
&lt;p&gt;2、欢迎界面选择Map Wizard 或者菜单Insert-&amp;gt;Map-&amp;gt;Map Wizard。&lt;/p&gt;
&lt;p&gt;3、选择ESRI形状文件。&lt;/p&gt;
&lt;p&gt;4、浏览文件夹，打开事先准备的.shp文件：&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/3583.ReportBuilder01.png" /&gt;&lt;/p&gt;
&lt;p&gt;5、单击&amp;lsquo;下一步&amp;rsquo;。&lt;/p&gt;
&lt;p&gt;6、选择地图的显示属性。这一步可以放大地图，然后选择只显示其中一块区域。也可以添加Bing的地图层。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/1715.ReportBuilder02.png" /&gt;&lt;/p&gt;
&lt;p&gt;7、设置好选项后，单击&amp;lsquo;下一步&amp;rsquo;。&lt;/p&gt;
&lt;p&gt;8、选择地图类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本图：只显示区域的地图，例如，销售区域。选项：通过调色板改变颜色或使用一种颜色。调色板是一组预定义的颜色。当分配完调色板中的所有颜色后，将分配颜色的阴影。&lt;/li&gt;
&lt;li&gt;颜色分析图：一个按变化的颜色显示分析数据的地图，例如，按区域列出的销售数据。&lt;/li&gt;
&lt;li&gt;起泡图：一个在各区域中心以不同气泡大小显示分析数据的地图，例如，按区域列出的销售数据。选项：根据第二个分析字段改变区域颜色以及指定颜色规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5224.ReportBuilder03.png" /&gt;&lt;/p&gt;
&lt;p&gt;9、选择颜色分析图，单击&amp;lsquo;下一步&amp;rsquo;。&lt;/p&gt;
&lt;p&gt;10、选择新建数据集，单击&amp;lsquo;下一步&amp;rsquo;。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5545.ReportBuilder04.png" /&gt;&lt;/p&gt;
&lt;p&gt;11、 点击&amp;lsquo;新建&amp;rsquo;，设置数据集连接字符串等属性。&lt;/p&gt;
&lt;p&gt;&lt;img border="0" src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/0777.ReportBuilder05.png" /&gt;&lt;/p&gt;
&lt;p&gt;12、单击&amp;lsquo;下一步&amp;rsquo;。&lt;/p&gt;
&lt;p&gt;13、选择所需的分析数据：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5684.ReportBuilder06.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;14、点击&amp;lsquo;下一步&amp;rsquo; 。&lt;/p&gt;
&lt;p&gt;15、设置匹配字段，建立空间数据与分析数据的映射：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/6710.ReportBuilder07.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;16、单击&amp;lsquo;下一步&amp;rsquo; 。&lt;/p&gt;
&lt;p&gt;17、设置色彩方案和主题：&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/5315.ReportBuilder08.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;18、 点击&amp;lsquo;完成&amp;rsquo;，完成地图创建。&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-97-59/4314.ReportBuilder09.png" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;完成地图向导创建地图之后，可以对创建的地图进行修改，比如编辑标题，添加新的地图层，添加标签等。&lt;/p&gt;
&lt;p&gt;创建完成地图之后，可以点击Report builder菜单&amp;lsquo;运行&amp;rsquo;进行预览。还可以将地图发布到报表服务器，以便于浏览和重用。&lt;/p&gt;
&lt;p&gt;如果你想进一步了解SQL Server 2008 R2的一些新功能，请继续关注SQL CRD的博客。&lt;/p&gt;
&lt;p&gt;软件测试工程师 金晶&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10018857" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Reporting+Service/">Reporting Service</category></item><item><title>SQL Server Utility</title><link>http://blogs.msdn.com/b/sqlcrd/archive/2010/05/10/sql-server-utility.aspx</link><pubDate>Mon, 10 May 2010 14:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10010296</guid><dc:creator>Qi Samuel Zhang</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sqlcrd/rsscomments.aspx?WeblogPostID=10010296</wfw:commentRss><comments>http://blogs.msdn.com/b/sqlcrd/archive/2010/05/10/sql-server-utility.aspx#comments</comments><description>&lt;P&gt;在即将发布的SQL Server 2008 R2中，SQL Server Management Studio提供了一个新的管理组件：SQL Server Utility。该组件能够帮助数据库管理员以统一和集中的方式去管理多个数据库实例：Instance以及数据层应用程序：Data-tier Application。（如果你对数据层应用程序没有太多的了解，请参考&lt;A href="http://msdn.microsoft.com/en-us/library/ee240739(SQL.105).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ee240739(SQL.105).aspx"&gt;这里&lt;/A&gt;）&lt;/P&gt;
&lt;P&gt;本文将对该组件所针对的应用场景和相关概念做些解释，然后会对该组件的主要功能接界面做进一步的介绍。&lt;/P&gt;
&lt;P&gt;先来看一下SQL Server Utility所要解决的用户需求吧： 随着数据库技术的越来越广泛的使用，很多企业里面都部署了一台以上的数据库服务器，并且在每个数据库服务器上都有着一个或若干个的数据库实例以及更多的数据层应用程序；想象一下，如果一个企业有着10个以上的数据库实例及更多的数据库层应用程序，对这些数据库实例与应用程序的监控与管理将是一个十分耗时而又费力的工作。而SQL Server Utility便是针对这一用户需求而开发的，在SQL Server Utility中，用户可以同时监控多个数据库实例及相关应用程序的使用状态，包括CPU、内存、硬盘等关键资源的使用情况。而且这些数据也会被保留一定时间，企业可以基于这些数据做进一步的分析，从而能够做更好的资源规划。&lt;/P&gt;
&lt;P&gt;那么SQL Server Utility是如何做到这一点的呢？我们先来解释一下SQL Server Utility的物理架构和相关概念，然后会进一步解释具体的步骤。下图便是SQL Server Utility的物理架构：&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 537px; HEIGHT: 124px" src="http://blogs.msdn.com/photos/sqlcrd/images/10010256/original.aspx" width=549 height=128 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010256/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;在这一架构中，一个或者多个需要被监控的数据库实例将注册到一个统一的控制点上（UCP），而数据库管理员则可以通过其他与此控制点相连的管理终端上对那些需要被监控的数据库实例进行监控和管理。&lt;/P&gt;
&lt;P&gt;为此，数据库管理员完成以下几步：&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;创建一个UCP。&lt;/LI&gt;
&lt;LI&gt;将需要被监控的数据库实例或者相关的数据库应用程序注册到该UCP中。&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;在完成上述步骤后，数据库管理员只需要通过SQL Server Management Studio连接到创建好的UCP，便可以在dashboard上看到相关数据库实例的资源使用状态了。例图如下：&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 520px; HEIGHT: 178px" src="http://blogs.msdn.com/photos/sqlcrd/images/10010260/original.aspx" width=554 height=192 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010260/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;接下来我们进一步介绍如何创建一个UCP，以及如何注册一个数据库实例，并会对Utility的管理做一个简要的介绍。&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;创建一个UCP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;在创建一个UCP之前，需要注意以下若干项：&lt;/P&gt;
&lt;P&gt;a.&amp;nbsp;当前的登录帐号必须有数据库管理员权限；&lt;BR&gt;b.&amp;nbsp;用来创建UCP的数据库实例从来没有被创建过UCP，并且也没有注册到任何其他的UCP中；&lt;BR&gt;c.&amp;nbsp;SQL Server Agent服务必须被设置为自动启动，缺省安装的情况下，SQL Server Agent 服务的启动方式是手动；&lt;BR&gt;d.&amp;nbsp;SQL Server Agent的启动帐号不能是缺省的build-in的域帐号，譬如：Network Service；&lt;/P&gt;
&lt;P&gt;2.&amp;nbsp;打开SQL Server Management Studio, 在View菜单中选择Utility Explorer；&lt;/P&gt;
&lt;P&gt;3.&amp;nbsp;在Utility Explorer上点击：&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010261/original.aspx" mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010261/original.aspx"&gt;来启动创建UCP向导；&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010262/original.aspx" mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010262/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;4.&amp;nbsp;点击下一步来指定在哪个数据库实例上来创建UCP，你可以在本地数据库实例上创建，也可以创建在一个远程的数据库实例上，但是数据库实例的版本号必须高于10.50。&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 513px; HEIGHT: 221px" src="http://blogs.msdn.com/photos/sqlcrd/images/10010264/original.aspx" width=513 height=221 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010264/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;5.&amp;nbsp;当设置完数据库实例以UCP名称后，点击下一步进入账户设置，你既可以用SQL Server Agent的账户，也可以指定一个域账户：该帐户作会被用作SQL Server Agent的代理账户来收集数据；&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 509px; HEIGHT: 253px" src="http://blogs.msdn.com/photos/sqlcrd/images/10010265/original.aspx" width=509 height=253 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010265/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;6.&amp;nbsp;点击下一步，进入预验证阶段：&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010266/original.aspx" mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010266/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;7.&amp;nbsp;点击下一步，查看汇总信息，一切确认无误，便可以直接进入下一步创建UCP：&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 505px; HEIGHT: 205px" src="http://blogs.msdn.com/photos/sqlcrd/images/10010267/original.aspx" width=505 height=205 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010267/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;8.&amp;nbsp;点击完成，结束整个创建过程。&lt;/P&gt;
&lt;P&gt;创建结束后，当前的数据库实例会缺省的被注册到刚刚创建的UCP中，由于数据在缺省情况下是每十五分钟收集一次，刚刚创建完的UCP没有任何数据，其dashboard看起来会是如下的样子，灰色的饼图表是数据尚未收集成功。&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010268/original.aspx" width=511 height=431 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010268/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;在Utility Explorer上点击Managed Instances, 也可以看到当前的数据库实例已被注册到当前的UCP中：&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010269/original.aspx" width=482 height=202 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010269/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;注册一个数据库实例&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;在Utility Explorer中，右键点击Managed Instances节点，选择：Enroll Instance菜单来启动数据库实例注册向导；&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010283/original.aspx" width=447 height=431 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010283/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;2.&amp;nbsp;点击：下一步进入数据库实例选择界面，点击Connect.. 来连接到一个已经存在的数据库实例上；&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010284/original.aspx" mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010284/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;3.&amp;nbsp;点击下一步，进入账户设置界面，和创建UCP的过程一样，在这一步需要指定一个有效的域帐户作为SQL Server Agent的代理账户用来收集数据；&lt;/P&gt;
&lt;P&gt;4.&amp;nbsp;点击下一步，进入预验证； 和创建UCP的过程一样，向导会对注册数据库实例的一些前提条件进行检查；&lt;/P&gt;
&lt;P&gt;5.&amp;nbsp;一切正常的话，点击下一步查看汇总信息，确认无误，点击下一步，进行注册：&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010285/original.aspx" mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010285/original.aspx"&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;6.&amp;nbsp;点击完成，结束整个注册过程；&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Utility管理&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;在Utility Explorer中点击Utility Administration可以进入Utility 管理界面，在这里你可以设置数据收集策略；安全策略及Utility数据仓库的一些基础配置。&lt;/P&gt;
&lt;P&gt;例如： 在数据收集策略中，你可以设置：当该数据库实例对CPU的使用超过70%时，可以认为该数据库实例已经超负荷使用（overutilized）了CPU资源; 而当CPU使用低于5%，认为该数据库实例没有充分利用CPU资源（underutilized）；同样的，你也可以对数据文件，日志文件等进行类似设置。&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010286/original.aspx" width=542 height=374 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010286/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;在安全设置中，你可以设置那些域帐户具有对Utility收集的数据读的权限：&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://blogs.msdn.com/photos/sqlcrd/images/10010287/original.aspx" width=527 height=287 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010287/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;而在数据仓库设置中，你可以设置Utility将对收集的数据保存多久：&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 520px; HEIGHT: 258px" src="http://blogs.msdn.com/photos/sqlcrd/images/10010288/original.aspx" width=576 height=309 mce_src="http://blogs.msdn.com/photos/sqlcrd/images/10010288/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;如果你想忙上尝试一下使用SQL Server 2008 R2的这一新功能，可以点击&lt;A href="http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx" mce_href="http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx"&gt;此处&lt;/A&gt;下载SQL Server 2008 R2的CTP版。如果你想进一步了解SQL Server 2008 R2的一些新功能，请继续关注SQL CRD的博客。&lt;/P&gt;
&lt;P&gt;软件测试主管：李俊&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10010296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server/">SQL Server</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/SQL+Server+2008+R2/">SQL Server 2008 R2</category><category domain="http://blogs.msdn.com/b/sqlcrd/archive/tags/Manageability/">Manageability</category></item></channel></rss>
