<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_灵感之源</title><subtitle type="text">新产品发布：智能网络资源系统</subtitle><id>http://feed.cnblogs.com/blog/u/1759/rss</id><updated>2011-12-05T02:05:59Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/1759/rss"/><entry><id>http://www.cnblogs.com/unruledboy/archive/2011/12/05/SQLMon2.html</id><title type="text">开源项目：高级SQL Server监控、性能图、分析与优化、版本控制</title><summary type="text">开源项目：高级SQL Server监控、性能图、分析与优化、版本控制</summary><published>2011-12-05T01:48:00Z</published><updated>2011-12-05T01:48:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2011/12/05/SQLMon2.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2011/12/05/SQLMon2.html"/><content type="html">&#xD;
&lt;p&gt;这是一个相当高级的SQL Server监控工具，全面监控SQL Server的活动与性能，分析性能瓶颈，给出优化建议。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;red-gate有一个在线的数据库监控工具，不过那个商业的东西价钱不便宜。我写的这个平民版，开源，功能上有颇多的差异（各有长短）。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;项目在Codeplex上开源：&lt;a href="http://sqlmon.codeplex.com/"&gt;http://sqlmon.codeplex.com/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在Codeproject上有英文介绍：&lt;a href="http://www.codeproject.com/KB/database/sqlmonitor.aspx"&gt;http://www.codeproject.com/KB/database/sqlmonitor.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;介绍&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;是否想过：&amp;#8220;SQL Server为什么那么慢？&amp;#8221;，&amp;#8220;为什么CPU占用那么高？&amp;#8221;，&amp;#8220;到底哪里死锁了？&amp;#8221;，&amp;#8220;为什么数据库那么大？&amp;#8221;，&amp;#8220;怎样才可以查看我的存储过程和函数的历史版本？&amp;#8221;，&amp;#8220;可以让我的SQL Server跑得更快吗？&amp;#8221;。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;你的答案就在这里;-)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;到底能干嘛&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;监控SQL Server的活动：进程、任务，详细查看当前执行的语句与实际变量值，终止进程&lt;/li&gt;&lt;li&gt;IO/CPU/网络等性能趋势图&lt;/li&gt;&lt;li&gt;函数/存储过程等的版本控制，这在商业软件中也没有（如果你知道，告诉我）&lt;/li&gt;&lt;li&gt;对象浏览器：服务器、数据库、表、视图、函数、存储过程等&lt;/li&gt;&lt;li&gt;数据库管理：收缩、日志清除、备份、恢复等&lt;/li&gt;&lt;li&gt;在整个数据库中搜索对象/脚本内容，这在SQL Server 2012中也无法做到&lt;/li&gt;&lt;li&gt;自动显示所有对象的脚本，如表、视图、函数、存储过程等&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;概览&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;img alt="" src="http://download.codeplex.com/download?ProjectName=sqlmon&amp;amp;DownloadId=188521" /&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在上图中，我们可以看见表的create脚本。如果你选择其它对象，如函数、存储过程等，一样会显示相应的脚本。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在对象列表中，如果是数据表，显示表的占用空间（包括索引）、记录数等。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;这些在SQL Server 2012中都没有。&lt;/p&gt;&lt;p&gt;&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;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('f5cb26aa-ee4b-482a-84d7-af8745a31268')"&gt;&lt;img style="display: none;" id="code_img_opened_f5cb26aa-ee4b-482a-84d7-af8745a31268"  onclick="cnblogs_code_hide('f5cb26aa-ee4b-482a-84d7-af8745a31268',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;div id="cnblogs_code_open_f5cb26aa-ee4b-482a-84d7-af8745a31268" &gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;DB_NAME&lt;/span&gt;(database_id)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;DatabaseName,&amp;nbsp;Name&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;Logical_Name,&amp;nbsp;Physical_Name,&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;CAST&lt;/span&gt;(size&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;decimal&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;30&lt;/span&gt;,&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;))&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;Size,&amp;nbsp;state&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;sys.master_files&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;DB_NAME&lt;/span&gt;(database_id)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;YOUR_DATABASE_NAME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;对象/脚本搜索&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('d5fd5eb7-0f2a-47c0-9b8e-9cc202edcc13')"&gt;&lt;img style="display: none;" id="code_img_opened_d5fd5eb7-0f2a-47c0-9b8e-9cc202edcc13"  onclick="cnblogs_code_hide('d5fd5eb7-0f2a-47c0-9b8e-9cc202edcc13',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;div id="cnblogs_code_open_d5fd5eb7-0f2a-47c0-9b8e-9cc202edcc13" &gt;&lt;div&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;search&amp;nbsp;in&amp;nbsp;script&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Select&lt;/span&gt;&amp;nbsp;s.name,&amp;nbsp;s.create_date&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;CreateDate,&amp;nbsp;s.modify_date&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;ModifyDate,&amp;nbsp;s.type,&amp;nbsp;c.&lt;span style="color: rgb(0, 0, 255);"&gt;text&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;syscomments&amp;nbsp;c&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;left&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;s&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;c.id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;s.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;like&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;%YOUR_QUERY_HERE%&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;search&amp;nbsp;in&amp;nbsp;jobs&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;job_id,&amp;nbsp;name,&amp;nbsp;date_created&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;CreateDate,&amp;nbsp;date_modified&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;ModifyDate,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Job&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;type&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;msdb.dbo.sysjobs&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;获取表结构&lt;/strong&gt;&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;To&amp;nbsp;get&amp;nbsp;table&amp;nbsp;names&amp;nbsp;and&amp;nbsp;records&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TableName&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;so.name,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;RowCount&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;MAX&lt;/span&gt;(si.rows)&amp;nbsp;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sysobjects&amp;nbsp;so,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sysindexes&amp;nbsp;si&amp;nbsp;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;so.xtype&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;U&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;si.id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;OBJECT_ID&lt;/span&gt;(so.name)&amp;nbsp;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;GROUP&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;BY&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;so.name&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;To&amp;nbsp;get&amp;nbsp;table&amp;nbsp;used&amp;nbsp;space&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;EXEC&lt;/span&gt;&amp;nbsp;sp_spaceused&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TABLE_NAME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;To&amp;nbsp;get&amp;nbsp;table&amp;nbsp;script&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;max&lt;/span&gt;),&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;max&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f3&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;YOUR_TABLE_NAME_HERE&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;13&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;char&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;10&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f3&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@f2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f3&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;table&lt;/span&gt;(Id&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;identity&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;primary&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;key&lt;/span&gt;,&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;max&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;ic&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;re&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;o&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;Columns&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;with&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;c.column_id,&amp;nbsp;Nr&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;row_number()&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;over&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;c.column_id),&amp;nbsp;Clr&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;count&lt;/span&gt;(&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;over&lt;/span&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;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(c.name)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;s.name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sys&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;or&lt;/span&gt;&amp;nbsp;c.is_computed&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(s.name)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;c.is_computed&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;s.name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sys&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;t.Name&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(t.name)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;c.user_type_id&lt;span style="color: rgb(128, 128, 128);"&gt;!=&lt;/span&gt;c.system_type_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;or&lt;/span&gt;&amp;nbsp;c.is_computed&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;t.Name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;in&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;xml&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;uniqueidentifier&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;tinyint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;timestamp&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;time&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sysname&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sql_variant&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smallmoney&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smallint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;smalldatetime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ntext&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;money&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;image&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;hierarchyid&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;geometry&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;geography&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;float&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;datetimeoffset&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;datetime2&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;datetime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;date&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;bigint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;bit&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;t.Name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;in&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varbinary&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;real&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;numeric&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;decimal&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;binary&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;nullif&lt;/span&gt;(c.max_length,&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;)),&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;max&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;nullif&lt;/span&gt;(c.scale,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;)),&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;t.Name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;in&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;nvarchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;nchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;nullif&lt;/span&gt;(c.max_length,&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;max&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 255);"&gt;nullif&lt;/span&gt;(c.scale,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;)),&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;??&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;ic.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;identity(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,ic.seed_value)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,ic.increment_value)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;c.is_computed&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;as&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;cc.definition&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;c.is_nullable&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;null&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;not&amp;nbsp;null&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;c.is_rowguidcol&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;rowguidcol&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;d.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;is&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;default&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;d.definition&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.columns&amp;nbsp;c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.types&amp;nbsp;t&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;t.user_type_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;c.user_type_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.schemas&amp;nbsp;s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;s.schema_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;t.schema_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;left&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;outer&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.computed_columns&amp;nbsp;cc&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;cc.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;cc.column_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.column_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;left&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;outer&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.default_constraints&amp;nbsp;d&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;d.parent_object_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;d.parent_column_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.column_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;left&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;outer&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.identity_columns&amp;nbsp;ic&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;ic.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;ic.column_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.column_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;(D,&amp;nbsp;o)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;Nr&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;Clr&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;IS&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;column_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;SubObjects&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;top&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;c.type,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;i.index_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;c&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;left&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;outer&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.indexes&amp;nbsp;i&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;i.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;i.name&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;parent_object_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;c.type&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;in&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;D&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;C&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;check&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;is_not_for_replication&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;not&amp;nbsp;for&amp;nbsp;replication&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;definition,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;10&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.check_constraints&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Pk&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;primary&amp;nbsp;key&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;nullif&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;lower&lt;/span&gt;(i.type_desc),&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;clustered&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;20&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.indexes&amp;nbsp;i&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;i.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;i.index_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;uq&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;values&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;unique&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;30&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;f&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;foreign&amp;nbsp;key&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;40&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.foreign_keys&amp;nbsp;f&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;f.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&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;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;references&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(s.name)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(o.name),&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;41&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.foreign_keys&amp;nbsp;f&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;o&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;o.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.referenced_object_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.schemas&amp;nbsp;s&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;s.schema_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;o.schema_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;f.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&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;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;not&amp;nbsp;for&amp;nbsp;replication&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;3&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;42&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.foreign_keys&amp;nbsp;f&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;o&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;o.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.referenced_object_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.schemas&amp;nbsp;s&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;s.schema_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;o.schema_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;f.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;f.is_not_for_replication&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;values&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@f4&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Unknow&amp;nbsp;SubObject&amp;nbsp;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@T&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;99&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;values&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;Indexes&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;insert&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;into&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;create&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;is_unique&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;unique&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;lower&lt;/span&gt;(s.type_desc)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;index&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;i&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,&amp;nbsp;row_number()&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;over&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;index_id))&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;on&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(sc.Name)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(o.name),&amp;nbsp;index_id,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.indexes&amp;nbsp;s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;o&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;o.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;s.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.schemas&amp;nbsp;sc&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;sc.schema_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;o.schema_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;s.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;is_unique_constraint&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;is_primary_key&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;s.type_desc&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;!=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;heap&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;columns&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;top&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;ic&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;ic&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;ic&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;index_column_id,&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;c.is_included_column&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;cc.Name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;c.is_descending_key&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;desc&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;c.is_included_column&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;cc.Name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;c.is_descending_key&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;desc&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.index_columns&amp;nbsp;c&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.columns&amp;nbsp;cc&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;c.column_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;cc.column_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;cc.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;c.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;index_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;index_column_id&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;index_column_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;D&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;D&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp;include&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;ic&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;references&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;top&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;re&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;re&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;re&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.constraint_column_id,&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;c1.Name,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;c2.Name&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.foreign_key_columns&amp;nbsp;f&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.columns&amp;nbsp;c1&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;c1.column_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.parent_column_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;c1.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.parent_object_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.columns&amp;nbsp;c2&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;c2.column_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.referenced_column_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;c2.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;f.referenced_object_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;f.constraint_object_id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;f.constraint_column_id&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i2&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;f.constraint_column_id&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&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;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;re&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;ic&lt;span style="color: rgb(128, 128, 128);"&gt;=-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql2&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;re&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;ic&lt;span style="color: rgb(128, 128, 128);"&gt;=-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;2&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;Render&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;with&lt;/span&gt;&amp;nbsp;x&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;as&lt;/span&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;d.id&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;,&amp;nbsp;D&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;d.D&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;isnull&lt;/span&gt;(d2.D,&lt;span style="color: rgb(255, 0, 0);"&gt;''&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;d&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;left&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;outer&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;d2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;d.re&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;d2.re&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;and&lt;/span&gt;&amp;nbsp;d2.o&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;42&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;d.o&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;41&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;D&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;d.D&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;x.D&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;d&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;x&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;x.id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;d.id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;delete&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;o&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;in&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;41&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;42&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;create&amp;nbsp;table&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(s.name)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;quotename&lt;/span&gt;(o.name)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@f1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;o&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;inner&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;join&lt;/span&gt;&amp;nbsp;sys.schemas&amp;nbsp;s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&amp;nbsp;o.schema_id&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;s.schema_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;o.&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@Id&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;top&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@I&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;Id,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;order&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;by&lt;/span&gt;&amp;nbsp;o,&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;when&lt;/span&gt;&amp;nbsp;o&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;then&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;right&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;0000&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;,id),&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;5&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&amp;nbsp;D&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;,&amp;nbsp;id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;delete&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;where&lt;/span&gt;&amp;nbsp;id&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@i&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@Sql&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;性能趋势图&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Download?ProjectName=sqlmon&amp;amp;DownloadId=309058" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在上图中，我们可以看见SQL Server历史/当前的IO/CPU/网络信息都在趋势图中显示。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这些数据来自几个系统变量：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;@@cpu_busy&lt;/li&gt;&lt;li&gt;@@io_busy&lt;/li&gt;&lt;li&gt;@@idle&lt;/li&gt;&lt;li&gt;@@pack_received&lt;/li&gt;&lt;li&gt;@@pack_sent&lt;/li&gt;&lt;li&gt;@@connections&lt;/li&gt;&lt;li&gt;@@packet_errors&lt;/li&gt;&lt;li&gt;@@total_read&lt;/li&gt;&lt;li&gt;@@total_write&lt;/li&gt;&lt;li&gt;@@total_errors&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;以下是相应的SQL：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@now&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;datetime&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_received&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_sent&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_errors&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@connections&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_read&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_write&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_errors&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@oldcpu_busy&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;used&amp;nbsp;to&amp;nbsp;see&amp;nbsp;if&amp;nbsp;DataServer&amp;nbsp;has&amp;nbsp;been&amp;nbsp;rebooted&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;declare&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;milliseconds&amp;nbsp;per&amp;nbsp;tick&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;Set&amp;nbsp;@mspertick.&amp;nbsp;&amp;nbsp;This&amp;nbsp;is&amp;nbsp;just&amp;nbsp;used&amp;nbsp;to&amp;nbsp;make&amp;nbsp;the&amp;nbsp;numbers&amp;nbsp;easier&amp;nbsp;to&amp;nbsp;handle&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;and&amp;nbsp;avoid&amp;nbsp;overflow.&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@timeticks&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000.0&lt;/span&gt;)&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;Get&amp;nbsp;current&amp;nbsp;monitor&amp;nbsp;values.&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@now&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;getdate&lt;/span&gt;(),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@cpu_busy&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@io_busy&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@idle&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_received&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@pack_received&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_sent&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@pack_sent&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@connections&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@connections&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_errors&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@packet_errors&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_read&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@total_read&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_write&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@total_write&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_errors&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0); font-weight: bold;"&gt;@@total_errors&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;Check&amp;nbsp;to&amp;nbsp;see&amp;nbsp;if&amp;nbsp;DataServer&amp;nbsp;has&amp;nbsp;been&amp;nbsp;rebooted.&amp;nbsp;&amp;nbsp;If&amp;nbsp;it&amp;nbsp;has&amp;nbsp;then&amp;nbsp;the&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;value&amp;nbsp;of&amp;nbsp;@@cpu_busy&amp;nbsp;will&amp;nbsp;be&amp;nbsp;less&amp;nbsp;than&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;spt_monitor.cpu_busy.&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;If&amp;nbsp;it&amp;nbsp;has&amp;nbsp;update&amp;nbsp;spt_monitor.&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@oldcpu_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;cpu_busy&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;master.dbo.spt_monitor&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@oldcpu_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;begin&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&amp;nbsp;master.dbo.spt_monitor&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastrun&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@now&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpu_busy&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;io_busy&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idle&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pack_received&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_received&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pack_sent&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_sent&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connections&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@connections&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pack_errors&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_errors&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_read&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_read&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_write&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_write&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_errors&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_errors&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;end&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;Now&amp;nbsp;print&amp;nbsp;out&amp;nbsp;old&amp;nbsp;and&amp;nbsp;new&amp;nbsp;monitor&amp;nbsp;values.&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&amp;nbsp;nocount&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;on&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;datediff&lt;/span&gt;(ss,&amp;nbsp;lastrun,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@now&lt;/span&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;master.dbo.spt_monitor&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;To&amp;nbsp;prevent&amp;nbsp;a&amp;nbsp;divide&amp;nbsp;by&amp;nbsp;zero&amp;nbsp;error&amp;nbsp;when&amp;nbsp;run&amp;nbsp;for&amp;nbsp;the&amp;nbsp;first&lt;br /&gt;&#xD;
**&amp;nbsp;time&amp;nbsp;after&amp;nbsp;boot&amp;nbsp;up&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;select&lt;/span&gt;&amp;nbsp;last_run&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;lastrun,&amp;nbsp;current_run&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@now&lt;/span&gt;,&amp;nbsp;seconds&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpu_busy_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;((&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpu_busy_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;(((&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;cpu_busy)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpu_busy_percentage&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;((((&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;cpu_busy)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;io_busy_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;((&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;io_busy_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;(((&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;io_busy)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;io_busy_percentage&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;((((&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;io_busy)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idle_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;((&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;bigint&lt;/span&gt;,&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idle_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;(((&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;idle)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idle_percentage&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;convert&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;,&amp;nbsp;((((&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;idle)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@mspertick&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1000&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@interval&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;packets_received_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_received&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;packets_received_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_received&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;pack_received,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;packets_sent_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_sent&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;packets_sent_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_sent&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;pack_sent,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;packet_errors_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_errors&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;packet_errors_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_errors&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;pack_errors,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_read&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_read&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_read&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_read&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;total_read,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_write&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_write&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_write&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_write&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;total_write,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_errors&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_errors&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;current_errors&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_errors&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;total_errors,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connections_total&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@connections&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connections_current&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@connections&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;-&lt;/span&gt;&amp;nbsp;connections&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;from&lt;/span&gt;&amp;nbsp;master.dbo.spt_monitor&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 128);"&gt;/*&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&#xD;
**&amp;nbsp;&amp;nbsp;Now&amp;nbsp;update&amp;nbsp;spt_monitor&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;*/&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;update&lt;/span&gt;&amp;nbsp;master.dbo.spt_monitor&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastrun&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@now&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpu_busy&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@cpu_busy&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;io_busy&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@io_busy&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;idle&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@idle&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pack_received&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_received&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pack_sent&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_sent&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connections&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@connections&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pack_errors&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@pack_errors&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_read&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_read&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_write&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_write&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total_errors&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@total_errors&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;版本控制&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;数据库开发人员总在想，每次修改了函数/存储过程，我们都得自己做备份，用以历史参考，当发现错误的时候，可以回滚。在SQL Monitor里面，这个是全自动的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;版本控制的思想来自这里：&lt;a href="http://www.sqlteam.com/article/using-ddl-triggers-in-sql-server-2005-to-capture-schema-changes" target="_blank"&gt;&lt;font color="#004cd5"&gt;http://www.sqlteam.com/article/using-ddl-triggers-in-sql-server-2005-to-capture-schema-changes&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原理就是用数据库DDL触发器记录每个DDL操作，自增版本，并存储到一个表中。&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Download?ProjectName=sqlmon&amp;amp;DownloadId=284310" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;关键代码&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;ANSI_NULLS&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;OFF&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;QUOTED_IDENTIFIER&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;OFF&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;ANSI_NULLS&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;QUOTED_IDENTIFIER&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;IF&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;EXISTS&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;sys.objects&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;object_id&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;OBJECT_ID&lt;/span&gt;(N&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[dbo].[VERSION_CONTROL_TABLE]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;type&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;in&lt;/span&gt;&amp;nbsp;(N&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;U&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;))&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;TABLE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;dbo&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{0}&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;bigint&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;IDENTITY&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;databasename&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;256&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;eventtype&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;50&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;objectname&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;256&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;objecttype&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;25&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sqlcommand&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;nvarchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;max&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;loginname&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;256&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;hostname&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;256&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;PostTime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;datetime&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;,&lt;br /&gt;&#xD;
&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;CONSTRAINT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;PK_VERSION_CONTROL_TABLE&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;PRIMARY&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;KEY&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;CLUSTERED&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&#xD;
(&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ID&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ASC&lt;/span&gt;&lt;br /&gt;&#xD;
)&lt;span style="color: rgb(0, 0, 255);"&gt;WITH&lt;/span&gt;&amp;nbsp;(IGNORE_DUP_KEY&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;OFF&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&lt;br /&gt;&#xD;
)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;PRIMARY&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;ANSI_NULLS&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;QUOTED_IDENTIFIER&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;CREATE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;TRIGGER&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TRG_VERSION_CONTROL_TABLE}&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;DATABASE&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;FOR&lt;/span&gt;&amp;nbsp;CREATE_PROCEDURE,&amp;nbsp;ALTER_PROCEDURE,&amp;nbsp;DROP_PROCEDURE,&lt;br /&gt;&#xD;
CREATE_TABLE,&amp;nbsp;ALTER_TABLE,&amp;nbsp;DROP_TABLE,&lt;br /&gt;&#xD;
CREATE_FUNCTION,&amp;nbsp;ALTER_FUNCTION,&amp;nbsp;DROP_FUNCTION,&lt;br /&gt;&#xD;
CREATE_TRIGGER,&amp;nbsp;ALTER_TRIGGER,&amp;nbsp;DROP_TRIGGER,&lt;br /&gt;&#xD;
CREATE_VIEW,&amp;nbsp;ALTER_VIEW,&amp;nbsp;DROP_VIEW,&lt;br /&gt;&#xD;
CREATE_INDEX,&amp;nbsp;ALTER_INDEX,&amp;nbsp;DROP_INDEX&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;NOCOUNT&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;DECLARE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentVersion&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;DECLARE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentID&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;DECLARE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@DatabaseName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;256&lt;/span&gt;)&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;DECLARE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@ObjectName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;varchar&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;256&lt;/span&gt;)&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;DECLARE&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;&amp;nbsp;XML&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;EVENTDATA()&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;INSERT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;INTO&lt;/span&gt;&amp;nbsp;dbo.VERSION_CONTROL_TABLE(databasename,&amp;nbsp;eventtype,objectname,&amp;nbsp;objecttype,&amp;nbsp;sqlcommand,&amp;nbsp;loginname,Hostname,PostTime,&amp;nbsp;Version)&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;VALUES&lt;/span&gt;(&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;.value(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(/EVENT_INSTANCE/DatabaseName)[1]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar(256)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;.value(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(/EVENT_INSTANCE/EventType)[1]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar(50)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&amp;nbsp;value&amp;nbsp;is&amp;nbsp;case-sensitive&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;.value(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(/EVENT_INSTANCE/ObjectName)[1]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar(256)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;.value(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(/EVENT_INSTANCE/ObjectType)[1]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar(25)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;.value(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(/EVENT_INSTANCE/TSQLCommand)[1]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar(max)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&amp;nbsp;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 128, 0);"&gt;@data&lt;/span&gt;.value(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(/EVENT_INSTANCE/LoginName)[1]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;varchar(256)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;),&lt;br /&gt;&#xD;
&lt;span style="color: rgb(255, 0, 255);"&gt;HOST_NAME&lt;/span&gt;(),&lt;br /&gt;&#xD;
&lt;span style="color: rgb(255, 0, 255);"&gt;GETDATE&lt;/span&gt;(),&lt;br /&gt;&#xD;
&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&lt;br /&gt;&#xD;
)&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentID&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;IDENT_CURRENT(&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;VERSION_CONTROL_TABLE&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;)&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@DatabaseName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;databasename,&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@ObjectName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;objectname&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;VERSION_CONTROL_TABLE&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;ID&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentID&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;IF&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 128, 0);"&gt;@DatabaseName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;IS&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@ObjectName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;IS&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;NOT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;)&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentVersion&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;MAX&lt;/span&gt;(Version)&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;VERSION_CONTROL_TABLE&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;databasename&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@DatabaseName&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;AND&lt;/span&gt;&amp;nbsp;objectname&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@ObjectName&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;UPDATE&lt;/span&gt;&amp;nbsp;VERSION_CONTROL_TABLE&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;SET&lt;/span&gt;&amp;nbsp;Version&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;ISNULL&lt;/span&gt;(&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentVersion&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;WHERE&lt;/span&gt;&amp;nbsp;ID&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 128, 0);"&gt;@CurrentID&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;END&lt;/span&gt;&lt;br /&gt;&#xD;
&lt;span style="color: rgb(0, 0, 255);"&gt;GO&lt;/span&gt;&lt;br /&gt;&#xD;
ENABLE&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;TRIGGER&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;TRG_VERSION_CONTROL_TABLE&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;DATABASE&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SQL Monitor会全自动给你的所有脚本修改做版本记录。你可以随时查看在什么时候哪个机器用什么身份修改了哪个对象的脚本。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Download?ProjectName=sqlmon&amp;amp;DownloadId=284847" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SQL Monitor内置版本比较，你可以清楚知道不同的版本的差异。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;活动监控&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;img alt="" src="http://download.codeplex.com/download?ProjectName=sqlmon&amp;amp;DownloadId=188522" /&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上图清晰显示所有系统的活动进程，每个进程当前执行什么语句。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;获取进程列表&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('bd71f9a0-ab90-4d86-a989-2308db640013')"&gt;&lt;img style="display: none;" id="code_img_opened_5489cf1a-d114-4876-8fbb-6498e62306c8"  onclick="cnblogs_code_hide('5489cf1a-d114-4876-8fbb-6498e62306c8',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;div id="cnblogs_code_open_5489cf1a-d114-4876-8fbb-6498e62306c8" &gt;&lt;div&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;To&amp;nbsp;get&amp;nbsp;jobs&lt;/span&gt;&lt;span style="color: rgb(0, 128, 128);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&amp;nbsp;job_id&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;spid,&amp;nbsp;name&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;program_name,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;dbid,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;cpu,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;physical_io,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;login_time,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;last_batch_begin,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;last_batch_end,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;status,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;hostname,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;hostprocess,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;cmd,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;NULL&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt;&amp;nbsp;loginname&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt;&amp;nbsp;msdb.dbo.sysjobs&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这是商业级的数据与性能分析，SQL Monitor自动给你的系统、数据库、数据表、索引等进行分析。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Download?ProjectName=sqlmon&amp;amp;DownloadId=309059" /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;基本原理是首先利用master.sys.xp_fixeddrives获取磁盘的剩余空间，然后：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;database&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;disk&lt;/span&gt;&amp;nbsp;free&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;space&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;databases&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;GetDatabasesInfo();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;files&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;new&amp;nbsp;List&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;tuple&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;bool,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&amp;gt;&amp;gt;&lt;/span&gt;();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;databases.AsEnumerable().ForEach(d&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;database&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;GetDatabaseInfo(d&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"name"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.ToString());&lt;br /&gt;&#xD;
&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 style="color: rgb(0, 0, 255);"&gt;database&lt;/span&gt;.AsEnumerable().ForEach(f&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;files.&lt;span style="color: rgb(0, 0, 255);"&gt;Add&lt;/span&gt;(new&amp;nbsp;Tuple&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;bool,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&amp;gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToInt32(f&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"type"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;==&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;,&amp;nbsp;f&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"physical_name"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.ToString(),&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToInt64(&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToDecimal(f&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Size"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;Size1K)));&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;spaces&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;new&amp;nbsp;Dictionary&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;string,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&amp;gt;&amp;gt;&lt;/span&gt;();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;//&lt;/span&gt;MB&amp;nbsp;free&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;driveSpaces&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;Query("&lt;span style="color: rgb(0, 0, 255);"&gt;EXEC&lt;/span&gt;&amp;nbsp;master.sys.xp_fixeddrives");&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;driveSpaces.AsEnumerable().ForEach(s&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&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 style="color: rgb(128, 128, 128);"&gt;//&lt;/span&gt;could&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;not&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;use&lt;/span&gt;&amp;nbsp;name&amp;nbsp;but&amp;nbsp;rather&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;index&lt;/span&gt;,&amp;nbsp;because&amp;nbsp;the&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;column&lt;/span&gt;&amp;nbsp;name&amp;nbsp;will&amp;nbsp;change&amp;nbsp;according&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;to&lt;/span&gt;&amp;nbsp;locale&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spaces.&lt;span style="color: rgb(0, 0, 255);"&gt;Add&lt;/span&gt;(s&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.ToString(),&amp;nbsp;new&amp;nbsp;KeyValue&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;long&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&amp;gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToInt64(s&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;),&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;files.ForEach(f&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&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 style="color: rgb(128, 128, 128);"&gt;//&lt;/span&gt;maybe&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;some&lt;/span&gt;&amp;nbsp;access&amp;nbsp;issues&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;drive&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;f.Item2.&lt;span style="color: rgb(255, 0, 255);"&gt;Substring&lt;/span&gt;(&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(spaces.ContainsKey(drive))&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spaces&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;drive&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.Value&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+=&lt;/span&gt;&amp;nbsp;f.Item3;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch&amp;nbsp;(Exception)&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(128, 128, 128);"&gt;//&lt;/span&gt;mmmm.....what&amp;nbsp;can&amp;nbsp;we&amp;nbsp;do,&amp;nbsp;mate?&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spaces.ForEach(s&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(s.Value.&lt;span style="color: rgb(0, 0, 255);"&gt;Key&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;s.Value.Value&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;Settings.Instance.DatabaseDiskFreeSpaceRatio)&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;analysisResult.&lt;span style="color: rgb(0, 0, 255);"&gt;Add&lt;/span&gt;(new&amp;nbsp;AnalysisResult&amp;nbsp;{&amp;nbsp;ResultType&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;AnalysisResultTypes.DiskFreeSpace,&amp;nbsp;ObjectName&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;s.&lt;span style="color: rgb(0, 0, 255);"&gt;Key&lt;/span&gt;,&amp;nbsp;ReferenceValue&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;s.Value.&lt;span style="color: rgb(0, 0, 255);"&gt;Key&lt;/span&gt;,&amp;nbsp;CurrentValue&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;s.Value.Value,&amp;nbsp;Factor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;Settings.Instance.DatabaseDiskFreeSpaceRatio&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;SizePercentage&amp;nbsp;});&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;database&lt;/span&gt;&amp;nbsp;data&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;file&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;log&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;file&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;space&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;databases.AsEnumerable().ForEach(d&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;d&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"name"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.ToString();&lt;br /&gt;&#xD;
&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(!systemDatabases.&lt;span style="color: rgb(0, 0, 255);"&gt;Contains&lt;/span&gt;(name))&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;database&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;GetDatabaseInfo(name);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;databaseSpace&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;new&amp;nbsp;Dictionary&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;databasefiletypes,&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&amp;gt;&lt;/span&gt;&amp;nbsp;{&amp;nbsp;{&amp;nbsp;DatabaseFileTypes.Data,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;},&amp;nbsp;{&amp;nbsp;DatabaseFileTypes.&lt;span style="color: rgb(255, 0, 255);"&gt;Log&lt;/span&gt;,&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;}&amp;nbsp;};&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;database&lt;/span&gt;.AsEnumerable().ForEach(f&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;key&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;(DatabaseFileTypes)&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToInt32(f&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"type"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;databaseSpace&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;key&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToInt64(&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToDecimal(f&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Size"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;Size1K);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool?&amp;nbsp;shrink&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(databaseSpace&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;DatabaseFileTypes.Log&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;databaseSpace&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;DatabaseFileTypes.Data&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;Settings.Instance.DatabaseDataLogSpaceRatio)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shrink&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;false;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;logSpaces&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;SQLHelper.Query("&lt;span style="color: rgb(0, 0, 255);"&gt;DBCC&lt;/span&gt;&amp;nbsp;SQLPERF(LOGSPACE)",&amp;nbsp;GetServerInfo(name));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;logSpace&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;logSpaces.&lt;span style="color: rgb(0, 0, 255);"&gt;Select&lt;/span&gt;(string.Format("&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Database&amp;nbsp;Name&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{0}&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;",&amp;nbsp;name));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(logSpace.Length&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;logSpacedUsed&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;Convert&lt;/span&gt;.ToDouble(logSpace&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;][&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"Log&amp;nbsp;Space&amp;nbsp;Used&amp;nbsp;(%)"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(logSpacedUsed&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;&lt;/span&gt;&amp;nbsp;Settings.Instance.DatabaseDataLogSpaceRatio)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shrink&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;true;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(shrink&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;!=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;analysisResult.&lt;span style="color: rgb(0, 0, 255);"&gt;Add&lt;/span&gt;(new&amp;nbsp;AnalysisResult&amp;nbsp;{&amp;nbsp;ResultType&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;AnalysisResultTypes.DatabaseLogSpace,&amp;nbsp;ObjectName&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;name,&amp;nbsp;ReferenceValue&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;databaseSpace&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;DatabaseFileTypes.Log&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;,&amp;nbsp;CurrentValue&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;databaseSpace&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;DatabaseFileTypes.Data&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;,&amp;nbsp;Factor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;Settings.Instance.DatabaseDataLogSpaceRatio&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;SizePercentage,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;Key&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;(bool)shrink&amp;nbsp;?&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;1&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;&amp;nbsp;});&lt;br /&gt;&#xD;
&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;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对于表空间，使用了sp_spaceused，关键代码：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;tables&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;GetObjects(KeyTables);&lt;br /&gt;&#xD;
tables.AsEnumerable().ForEach(t&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&amp;gt;&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;name&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;t&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;KeyName&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;.ToString();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;space&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;Query(string.Format("&lt;span style="color: rgb(0, 0, 255);"&gt;EXEC&lt;/span&gt;&amp;nbsp;sp_spaceused&amp;nbsp;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{0}&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;/span&gt;",&amp;nbsp;name),&amp;nbsp;CurrentServerInfo);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(255, 0, 255);"&gt;space&lt;/span&gt;.Rows.&lt;span style="color: rgb(255, 0, 255);"&gt;Count&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;0&lt;/span&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;row&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(255, 0, 255);"&gt;space&lt;/span&gt;.Rows&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;;&lt;br /&gt;&#xD;
&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;dataSize&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;ToKB(row&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"data"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;Size1K;&lt;br /&gt;&#xD;
&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 style="color: rgb(255, 0, 255);"&gt;var&lt;/span&gt;&amp;nbsp;indexSize&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;ToKB(row&lt;span style="color: rgb(255, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"index_size"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;]&lt;/span&gt;)&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;Size1K;&lt;br /&gt;&#xD;
&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 style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&amp;nbsp;(indexSize&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;dataSize&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;/&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 0, 0); font-weight: bold;"&gt;100&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;*&lt;/span&gt;&amp;nbsp;Settings.Instance.TableDataIndexSpaceRatio)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;analysisResult.&lt;span style="color: rgb(0, 0, 255);"&gt;Add&lt;/span&gt;(new&amp;nbsp;AnalysisResult&amp;nbsp;{&amp;nbsp;ResultType&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;AnalysisResultTypes.TableIndexSpace,&amp;nbsp;ObjectName&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;name,&amp;nbsp;ReferenceValue&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;dataSize,&amp;nbsp;CurrentValue&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;indexSize,&amp;nbsp;Factor&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;Settings.Instance.DatabaseDataLogSpaceRatio&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;+&lt;/span&gt;&amp;nbsp;SizePercentage,&amp;nbsp;&lt;span style="color: rgb(0, 0, 255);"&gt;Key&lt;/span&gt;&amp;nbsp;&lt;span style="color: rgb(128, 128, 128);"&gt;=&lt;/span&gt;&amp;nbsp;(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;)TableIndexSpaceRules.DataIndexSpaceRatio&amp;nbsp;});&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/download?ProjectName=sqlmon&amp;amp;DownloadId=188523" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;最新版本&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://sqlmon.codeplex.com/releases/view/77943"&gt;http://sqlmon.codeplex.com/releases/view/77943&lt;/a&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;  &#xD;
 &#xD;
 &#xD;
&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/2276388.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2011/12/05/SQLMon2.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2011/05/10/Australia1YearAnniversary.html</id><title type="text">登陆澳洲一周年记</title><summary type="text">那天，2010年，5月，14日。在爸妈开的大排档忙完后，爸妈说今晚不开门了，送你去机场。一行人，4辆车，8个大袋子，抵达新白云机场。三叔硬塞了3000人民币给我，我说：在澳洲用不上吧？他说：可以的，拿着吧。泪别了爸妈，过了跟验尸般的海关，匆忙赶上快要起飞的CZ325，后来因为暴雨天气，在飞机上坐了3个多小时才起飞，时间是凌晨12点多。这是我生平第一次坐飞机，也是第一次出远门。飞机在空中颠簸，一路轰鸣，空间小，腿一直无法伸展，整夜无法入睡。总在想：在澳洲，没亲戚，没朋友，什么都要从头再来，顿时感到很空虚经过9个小时的飞行，8000多公里，早上，通过窗口，看见了梦想中的澳洲，错落有致的房子和大片大</summary><published>2011-05-10T02:05:00Z</published><updated>2011-05-10T02:05:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2011/05/10/Australia1YearAnniversary.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2011/05/10/Australia1YearAnniversary.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;那天，2010年，5月，14日。在爸妈开的大排档忙完后，爸妈说今晚不开门了，送你去机场。&lt;/p&gt;&#xD;
&lt;p&gt;一行人，4辆车，8个大袋子，抵达新白云机场。三叔硬塞了3000人民币给我，我说：在澳洲用不上吧？他说：可以的，拿着吧。泪别了爸妈，过了跟验尸般的海关，匆忙赶上快要起飞的CZ325，后来因为暴雨天气，在飞机上坐了3个多小时才起飞，时间是凌晨12点多。这是我生平第一次坐飞机，也是第一次出远门。&lt;/p&gt;&#xD;
&lt;p&gt;飞机在空中颠簸，一路轰鸣，空间小，腿一直无法伸展，整夜无法入睡。总在想：在澳洲，没亲戚，没朋友，什么都要从头再来，顿时感到很空虚&lt;/p&gt;&#xD;
&lt;p&gt;经过9个小时的飞行，8000多公里，早上，通过窗口，看见了梦想中的澳洲，错落有致的房子和大片大片的绿树，天气非常好，蓝天，没有白云。感觉真好。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;那天，2010年，5月，15日。&lt;/p&gt;&#xD;
&lt;p&gt;下飞机的时候太激动，把护照都掉地上了，乘务员提醒才拿回来。过海关，没有人。。。估计当时就我们的飞机降落。等了20分钟，数来数去，还是感觉丢了个包。过程中还有海关的警犬来嗅我的包，然后盘问了几句，在我的机票上签了个名就走了。&lt;/p&gt;&#xD;
&lt;p&gt;过海关比较顺利，看见隔壁关卡的都在验尸般的审查，把包都拆了逐个看，我前面的女同胞不大懂英语，先前她就已经在别的区域审查过一次，现在又被审查，她让我跟海关人员解释她没带违法的东西。经过我的解释，海关放走了她。轮到检查我了，我的8个大包都不用打开，只让我把随身的小包打开，看见里面有一个红包，就问我这是啥，我解释说是家里的老人给出远门的孩子的一种祝福，这是中国传统，然后他们就微笑一下，说"welcome to australia"，让我过关了。&lt;/p&gt;&#xD;
&lt;p&gt;过关之后第一个看见的不是鬼佬，是一个说普通话的华人，估计是机场工作人员，笑容可掬，感觉很温暖。&lt;/p&gt;&#xD;
&lt;p&gt;朋友来接我机，把我送到早就在网上租好的房子，房东热情地请我们吃饭，然后我们就算安顿下来了。之后房东带我们去附近的westfield购物中心逛，告诉我们哪里来什么东西便宜。&lt;/p&gt;&#xD;
&lt;p&gt;来之前总听大家说在澳洲人手一部汽车，因为没有不方便。来了第二周，我们买了一部二手的丰田camry，3300刀。声明一下：我是反对日货的。。。&lt;/p&gt;&#xD;
&lt;p&gt;顺带说一下，来澳洲2个月，我们花了2万澳元。。。&lt;/p&gt;&#xD;
&lt;p&gt;然后我们花了一个多月把所有手续都办了：税号（TFN），买电话，centrelink登记拿福利，family assistance office登记拿医保（medicare）。&lt;/p&gt;&#xD;
&lt;p&gt;之后就去了银行开帐号拿信用卡，给家里开通电话和上网。&lt;/p&gt;&#xD;
&lt;p&gt;当然还有女儿上幼儿园。这里的幼儿园收费很贵，3岁以上每天要80多澳元。扣除了childcare之后你还得给60刀左右（视乎你的家庭收入）。&lt;/p&gt;&#xD;
&lt;p&gt;然后就开始找工作了，在seek.com.au等招聘网站狂发简历，前后发了100个简历吧，电话面试了几间，面对面面试了2次，然后就拿到现在公司的offer了，前后花了2周。&lt;/p&gt;&#xD;
&lt;p&gt;随后就去RTA(相当于中国的交管局)考车牌，因为澳洲承认你在外国的驾驶经验，满3年就可以转成本地的FULL驾照了。我路试考砸了2次，第三次才通过，估计是因为3次考试都是同一个考官。。。我一定不会忘记他。。。你懂的。。。第三次考试的时候，我直接跟他说：我再也不想看见你了。。。&lt;/p&gt;&#xD;
&lt;p&gt;刚来的时候，碰上每年2次的政府回收大件垃圾时间，大家可以把自家不用的东西放门口，别人如果看见适合自己的，可以拿回家。刚开始观察了几天，后来趁天色黑了，就偷偷地去捡了张很大的饭桌，感觉像个讨饭的。。。不过后来拿多了，胆子也壮了，也习以为常了。&lt;/p&gt;&#xD;
&lt;p&gt;还没有上班之前，我们每周都到各大海滩玩，去那些国家公园野餐烧烤，感觉很舒服。这里的自然环境很好，花草树木非常茂盛，公园很多，在国家公园里面，一般都有河流和大片的森林，大家可以划船，有钱人会开游艇，出海享受阳光和钓鱼。如果你在夏天去海滩，看见那些全体裸体在晒阳光的，别想歪，因为很多都这样干，不论男女。。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2010年，7月，老婆怀上孩子了。&lt;/p&gt;&#xD;
&lt;p&gt;老婆想有个自己的家，然后我们就开始到处看房子，前后看了20间房子，最后选了间在westfield购物中心旁边的，说是购物和交通都方便。&lt;/p&gt;&#xD;
&lt;p&gt;2010年，11月，入住新买的房子。&lt;/p&gt;&#xD;
&lt;p&gt;2011年，4月，16日，儿子出世。这是我们家在澳洲本土出生第一代华人，所谓的ABC（Australia Born Chinese），在美国也叫ABC，不过一般人喜欢叫ABC做香蕉人，黄皮白心，表面是华人，实际心是属于美国的。&lt;/p&gt;&#xD;
&lt;p&gt;我们给儿子起了英文名，当然也保留了中国的名字做中间名(middle name)，目的就是想他记住自己来自中国。&lt;/p&gt;&#xD;
&lt;p&gt;然后给孩子申请了福利，出生证，在6月10日入了澳洲国籍，拿了澳洲护照。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;今天，2011年，5月，10日。登陆澳洲一周年记。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;来澳洲1周年，我们安顿下来，买来部老爷车，找到了工作，买了间二手房子，生了个儿子，儿女双全，感觉比较充实。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;在澳洲，最大的感慨是这里的税收重，一般收入家庭，一个月里面，起码一周是给政府打工的。&lt;/p&gt;&#xD;
&lt;p&gt;不过，税收是取之于民，用之于民。譬如：拿了medicare，你看病就不用给钱了，药费减半，这里一般看病不去医院，而是去看GP(General Practise)，相当于在中国的社区医院，一般一个人会有一个固定的GP。住院也是不需要给钱的，不过需要在公立医院排队，曾经有人说过一个案例，有人等半年等不下去，自己坐飞机回中国看病去了。当然你也可以买私人医疗保险，这样你就可以去私立医院，排队的时间会短很多，而且可以选择医生。其他医药器械可能会更便宜，譬如避孕器，原价235刀，现在只需要35刀。&lt;/p&gt;&#xD;
&lt;p&gt;因为是多元化国家，中国称澳洲是联合国，各色人种，来自120多个国家和地区的人民生活在一起。因为语言的不同，澳洲政府提供了免费的翻译服务，任何时候，你都可以打电话给翻译服务处要求提供超过120种语言的翻译服务。而且，还可以预约翻译人员到达现场为你提供服务，譬如你不懂英语，你要去医院看病，你就可以让医院给你预约翻译，全程在你身边为你服务。&lt;/p&gt;&#xD;
&lt;p&gt;去图书馆借书、多媒体也是不需要钱的，一般每个社区都有一些公园或者游乐场，也是免费的。&lt;/p&gt;&#xD;
&lt;p&gt;上面说过，上幼儿园，政府会给你一些补贴。&lt;/p&gt;&#xD;
&lt;p&gt;我的女儿每个月会拿到几百澳元的补贴，所谓的牛奶金等。如果你租房，还有租房补贴。一部家庭1个孩子儿子在租房的话，一个月大概可以拿1000澳元的补贴。&lt;/p&gt;&#xD;
&lt;p&gt;在这里生孩子，根据你的收入，一般人会拿到baby bonus，所谓的新生儿奖励，5200多澳元。&lt;/p&gt;&#xD;
&lt;p&gt;另外，你买房子，政府还会给你补贴，我们就那了7000澳元的所谓赞助。&lt;/p&gt;&#xD;
&lt;p&gt;每财年结束，大家都可以申请退税，政府根据你过去一年的收入，如果多给了税，可以退回来。&lt;/p&gt;&#xD;
&lt;p&gt;这里的生活质量比中国高，食品安全，蔬菜水果特别的鲜甜，蓝天白云多。&lt;/p&gt;&#xD;
&lt;p&gt;当然，这里有种族歧视，鬼佬跟你竖中指问候你常有。&lt;/p&gt;&#xD;
&lt;p&gt;总体来说，这里适合生活。建议想过自在生活的各位，可以考虑过来。&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/2041851.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2011/05/10/Australia1YearAnniversary.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/11/22/SQLMon.html</id><title type="text">开源项目：SQL Monitor  3.0.8</title><summary type="text">什么事前几天有点无聊，想写点新东西。公司的系统复杂，SQL Server经常会CPU占用100%，SQL Monitor就是用来帮助分析什么SQL的执行导致这个问题的。怎么办原理非常简单，首先是获取所有SQL进程，方法有多种：1.sys.sysprocesses：在SQL Server 2000就声明要被移除了，不建议使用。实际上sys.sysprocesses是用以下的dmv来映射的。2. sp_who3. sp_who2：跟sp_who类似，获取的字段比sys.sysprocesses和以下的dmv要少。4. sys.dm_exec_sessions等相关dmv：select * from</summary><published>2010-11-22T11:17:00Z</published><updated>2010-11-22T11:17:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/11/22/SQLMon.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/11/22/SQLMon.html"/><content type="html">&lt;p&gt;&lt;strong&gt;什么事&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;前几天有点无聊，想写点新东西。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;公司的系统复杂，SQL Server经常会CPU占用100%，SQL Monitor就是用来帮助分析什么SQL的执行导致这个问题的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;怎么办&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原理非常简单，首先是获取所有SQL进程，方法有多种：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.sys.sysprocesses：在SQL Server 2000就声明要被移除了，不建议使用。实际上sys.sysprocesses是用以下的dmv来映射的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. sp_who&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3. sp_who2：跟sp_who类似，获取的字段比sys.sysprocesses和以下的dmv要少。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;4. sys.dm_exec_sessions等相关dmv：&lt;/p&gt;&#xD;
&lt;p&gt;select * from sys.dm_exec_connections&lt;br /&gt;select * from sys.dm_exec_requests&lt;br /&gt;select * from sys.dm_exec_sessions&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于sys.dm_exec_sessions等dmv，可以参看这里：&lt;a href="http://msdn.microsoft.com/en-us/library/ms187997.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms187997.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后dbcc INPUTBUFFER(spid)来获取指定进程执行的SQL，最后用kill spid来中止SQL进程。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实际调试起来，会用到其它复杂的SQL，譬如是什么锁，锁定哪个数据库中的哪个表，等等，下一篇文章才写吧。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;能干嘛&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1. 监控SQL Server的进程和Job，查看当前执行的SQL/命令，并终止之。&lt;/p&gt;&#xD;
&lt;p&gt;2. 对象浏览器，跟&amp;nbsp;SQL Server Management Studio 类似&lt;/p&gt;&#xD;
&lt;p&gt;3. 查询数据&lt;/p&gt;&#xD;
&lt;p&gt;4. 数据库收缩、备份、分离等&lt;/p&gt;&#xD;
&lt;p&gt;5. 性能分析&lt;/p&gt;&#xD;
&lt;p&gt;6. 对象/脚本查找&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;什么要求&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个项目是用C# 3.5写的，为了省事，用了Linq，所以要求.net框架为3.5 Client Profile，如果你把Linq换成for/next，可以在2.0环境使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;在哪里&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;项目地址：&lt;a href="http://sqlmon.codeplex.com/"&gt;http://sqlmon.codeplex.com/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="color: red"&gt;最新版本下载&lt;/strong&gt;：&lt;span style="text-align: ; widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; color: rgb(48,51,45); font-size: 13px" &gt;&lt;a style="color: rgb(62,98,166); text-decoration: underline" id="fileDownload0"  tabindex="9" href="http://sqlmon.codeplex.com/releases/58310/download/192243"&gt;SQLMon 3.0 alpha 8 src&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="text-align: ; widows: 2; text-transform: none; text-indent: 0px; letter-spacing: normal; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" &gt;&lt;span style="font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; color: rgb(48,51,45); font-size: 13px" &gt;&lt;a style="color: rgb(62,98,166); text-decoration: underline" id="fileDownload1"  tabindex="9" href="http://sqlmon.codeplex.com/releases/58310/download/192244"&gt;SQLMon 3.0 alpha 8 binary&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sqlmon&amp;amp;DownloadId=188521" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sqlmon&amp;amp;DownloadId=188522" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sqlmon&amp;amp;DownloadId=188523" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sqlmon&amp;amp;DownloadId=188524" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1884697.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/11/22/SQLMon.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/08/11/XProductComingSoon.html</id><title type="text">划时代的新产品即将上市，敬请期待！</title><summary type="text">一切即将改变</summary><published>2010-08-11T09:56:00Z</published><updated>2010-08-11T09:56:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/08/11/XProductComingSoon.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/08/11/XProductComingSoon.html"/><content type="html">&lt;table border="0" cellspacing="0" cellpadding="0" width="680" bgcolor="#000000" align="center" height="100%"&gt;&#xD;
    &lt;tbody&gt;&#xD;
        &lt;tr&gt;&#xD;
            &lt;td align="center"&gt;&#xD;
            &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&#xD;
                &lt;tbody&gt;&#xD;
                    　　　　　　&#xD;
                    &lt;tr height="200"&gt;&#xD;
                        &lt;td&gt;&amp;nbsp;&lt;/td&gt;&#xD;
                    &lt;/tr&gt;&#xD;
                    &lt;tr&gt;&#xD;
                        &lt;td height="389" background="http://www.xnlab.com/zh/comingsoon/dialog.jpg" width="552"&gt;&#xD;
                        &lt;table border="0" cellspacing="0" cellpadding="0" align="center"&gt;&#xD;
                            &lt;tbody&gt;&#xD;
                                &lt;tr&gt;&#xD;
                                    &lt;td id="main" width="100%" align="center"&gt;&lt;a href="http://www.xnlab.com/zh/comingsoon/default.htm"&gt;&lt;span style="color: white; font-size: 32px"&gt;一切即将改变&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&#xD;
                                    &lt;/td&gt;&#xD;
                                &lt;/tr&gt;&#xD;
                            &lt;/tbody&gt;&#xD;
                        &lt;/table&gt;&#xD;
                        &lt;/td&gt;&#xD;
                    &lt;/tr&gt;&#xD;
                    　　　　　　&#xD;
                    &lt;tr height="200"&gt;&#xD;
                        &lt;td&gt;&amp;nbsp;&lt;/td&gt;&#xD;
                    &lt;/tr&gt;&#xD;
                &lt;/tbody&gt;&#xD;
            &lt;/table&gt;&#xD;
            &lt;/td&gt;&#xD;
        &lt;/tr&gt;&#xD;
    &lt;/tbody&gt;&#xD;
&lt;/table&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1797524.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/08/11/XProductComingSoon.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/07/26/FilioTechDetails.html</id><title type="text">分布式文件快速搜索-技术细节分析(开源/并行)</title><summary type="text">系列文章1.分布式文件快速搜索(多计算机并行/多种算法)2.分布式文件快速搜索的设计与实现(开源/分布式计算/并行)3.分布式文件快速搜索-技术细节分析(开源/并行) 前言在上一篇文章中，对分布式文件快速搜索的设计与实现进行了说明。今天，将对具体的实现细节进行分析。文件的检索文件获取1). 一般地，用Directory.GetDirectories()加上SearchOption.AllDirec...</summary><published>2010-07-26T10:37:00Z</published><updated>2010-07-26T10:37:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/07/26/FilioTechDetails.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/07/26/FilioTechDetails.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;系列文章&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索(多计算机并行/多种算法)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/20/CloudFileSearch.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索的设计与实现(开源/分布式计算/并行)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.分布式文件快速搜索-技术细节分析(开源/并行)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="page-break-before: always; background-color: #c0c0c0; height: 1px; font-size: 1px; vertical-align: middle" title="Print Page Break"&gt;&amp;nbsp; &lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在上一篇文章中，对分布式文件快速搜索的设计与实现进行了说明。今天，将对具体的实现细节进行分析。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;文件的检索&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;文件获取&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1). 一般地，用Directory.GetDirectories()加上SearchOption.AllDirectories来获取某个的目录下的所有文件（包括任意层子文件）。但在这里会采用自行递归获取，每获取一层目录的文件，都会预先根据SearchTypes条件(如文件大小、文件名、修改时间、属性等)来碰撞。具体参看WorkV7FindFileRunner.FindLocal方法。&lt;/p&gt;&#xD;
&lt;p&gt;2). 相比递归获取文件列表，我们可以直接读取物理磁盘的MFT(Master File Table)主文件表，这样不需要逐个目录递归，直接顺序获取所有文件夹和文件记录，速度可以比递归快10倍以上。在Windows NT便引入的NTFS文件系统，拥有USN Journal（文件日志），每个文件的变化（添加、修改、删除、更名等）都会被记录，在通过MFT获取所有文件后，每次运行，只需要判断一下系统的变化并记录便可，无需重新扫描整个磁盘。 &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;哈希获取&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在使用SearchTypes条件过滤完成后，使用MD5CryptoServiceProvider来获取MD5哈希值。当然，你可以使用SHA1CryptoServiceProvider计算哈希值，如果你觉得MD5不可靠，具体参看WorkUtils.HashMD5File。&lt;/p&gt;&lt;br /&gt;&#xD;
&lt;p&gt;实际的哈希获取，会使用缓存。缓存的实现使用快速二进制序列化，原理是判断缓存数据库是否存在一样的文件信息（文件名、大小和修改时间），如果匹配，则返回已经存在的哈希值，否则就获取新的哈希值。具体参看LocalHashStorage。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;文件的匹配/比较&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;文件的匹配有3种方式：完全一致、包含以及全文索引。&lt;/p&gt;&#xD;
&lt;ol&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;完全一致&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;完全一致，直接使用哈希值比较。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;包含&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;适用于运行时搜索，判断文本文件中包含的内容。目前直接使用File.ReadAllText(file).IndexOf(keyword, StringComparison.InvariantCultureIgnoreCase)来判断，可能遇到的问题应该是文件太大导致内存溢出。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;全文索引&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可索引文件的全文内容会自动缓存，支持自定义扩展接口IFileContentIndex，目前内置了微软的IFilter实现。具体参看LocalFileContentIndexStorage。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;并行计算的处理&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;因为不是.NET3.5/4，没有PPL，只能模拟并行，来源参看&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索v7.0(多计算机并行/多种算法)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;。原理是使用ThreadPool.QueueUserWorkItem各个任务，使用ManualResetEvent记住每个任务的状态，并用WaitHandle.WaitAll等待所有任务完成。具体参看ParallelProcessor.ExecuteParallel。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('7bbf10e0-4aed-4336-b978-ce75af9d6e44')"&gt;&lt;img style="display: none" id="code_img_opened_7bbf10e0-4aed-4336-b978-ce75af9d6e44"  onclick="cnblogs_code_hide('7bbf10e0-4aed-4336-b978-ce75af9d6e44',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_7bbf10e0-4aed-4336-b978-ce75af9d6e44" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ExecuteParallel(IParallelWorker[]&amp;nbsp;methods)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(methods.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Initialize&amp;nbsp;the&amp;nbsp;reset&amp;nbsp;events&amp;nbsp;to&amp;nbsp;keep&amp;nbsp;track&amp;nbsp;of&amp;nbsp;completed&amp;nbsp;threads&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;ManualResetEvent[]&amp;nbsp;resetEvents&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ManualResetEvent[methods.Length];&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Launch&amp;nbsp;each&amp;nbsp;method&amp;nbsp;in&amp;nbsp;it's&amp;nbsp;own&amp;nbsp;thread&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;methods.Length;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resetEvents[i]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ManualResetEvent(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ThreadPool.QueueUserWorkItem(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;WaitCallback(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;index)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&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: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;methodIndex&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;)index;&lt;br /&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;&amp;nbsp;&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: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Execute&amp;nbsp;the&amp;nbsp;method&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;methods[methodIndex].Run();&lt;br /&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;&amp;nbsp;&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: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Tell&amp;nbsp;the&amp;nbsp;calling&amp;nbsp;thread&amp;nbsp;that&amp;nbsp;we're&amp;nbsp;done&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;resetEvents[methodIndex].Set();&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}),&amp;nbsp;i);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Wait&amp;nbsp;for&amp;nbsp;all&amp;nbsp;threads&amp;nbsp;to&amp;nbsp;execute&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&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;WaitHandle.WaitAll(resetEvents);&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;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;线程安全&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在多线程的环境中，最常见的问题是线程安全。.NET 2.0中，Dictionary是不安全的，我用网上封装的SynchronizedDictionary，当然，我们还可以使用折腾箱子的HashTable。在.NET 4.0中，你可以使用ConcurrentDictionary。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;除了集合，在访问FileStream等对象的情况，你都必须注意保证线程安全，否则数据会跟实际预想不一致。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;任务切分&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;并行计算最关键是如何切分任务。在上一篇文章中我已经简略地说明，实际的逻辑比较复杂。首先，根据要搜索的文件组和最大任务数进行切分，在每个任务中，判断文件夹是否为远程文件夹，如果是，则使用分布式搜索，否则本地搜索，具体参看WorkV7FindFileRunner。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在上述所有文件夹搜索任务都完成后，聚合搜索结果，再根据网络/本地切分任务。对于本地文件夹，则判断是否为同一个物理磁盘，如果是，则动态使用并行计算以实现加速。具体参看WorkV7.Find()。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;具体参看上一篇文章的流程图、WorkV7FindFileRunner(第一次根据文件大小、名称等过滤)和WorkV7FindResultRunner(根据文件属性过滤后再根据匹配方式搜索)。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;分布式的实现&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这是本程序的最大特点。分布式的原理就是在各个节点部署一个监听程序，多个节点组合成一个grid，在监听的同时，也可以作为客户端发送请求。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;数据的传输&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本程序没有使用XML作为数据载体，而是使用了自定义的格式：文件头+数据体（如文件内容等），文件头包括了命令等信息。整个内容可选压缩算法，每个数据包在最后自动添加结束标记，以便在TCP中识别。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;协议&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;分布式文件快速搜索自定义了协议接口，内置了对HTTP、TCP和FTP的支持，你可以自由添加各种协议。每种网络连接，都会使用异步处理，避免堵塞请求。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;譬如：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;c:\temp\abc.txt&lt;br /&gt;\\lancomputer\temp\abc.txtt&lt;br /&gt;http://1.2.3.4:88/foo/abc.txt&lt;br /&gt;tcp://1.2.3.4:55/foo/abc.txt&lt;br /&gt;ftp://1.2.3.4/foo/abc.txt&lt;br /&gt;pop3://1.2.3.4:101/foo/abc.txt&lt;br /&gt;skydrive://foo/abc.txt&lt;br /&gt;dropbox://foo/abc.txt&lt;br /&gt;AmazonS3://foo/abc.txt&lt;br /&gt;flicker://foo/abc.jpg&lt;br /&gt;facebook://foo/abc.jpg&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ol&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;HTTP&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;每个数据包都使用POST方式，在可选压缩后把数据写入Request.GetRequestStream，具体参看HTTPFileWorkProvider。在服务器端，使用HttpListener监听，在获得每个HttpListenerRequest后，调用基类(BaseManager)的ProcessRequest处理Request.InputStream，具体参看WorkV7HTTPManager&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;HttpListener有点诡异，使用fooListener.Prefixes.Add()来定义监听的路径。在调用HttpListener之前，你需要使用HttpListener.IsSupported判断一下你的操作系统是否支持：必须XP SP2或以上、Win2003、Vista、08、Win7。HttpListener本身不支持SSL，但你可以httpcfg.exe来配置，之前我参看的是一篇英文的文章，现在一下子找不到，大家就凑合用中文的吧：&lt;a href="http://www.csharpwin.com/dotnetspace/2232.shtml"&gt;配置HttpListener侦听SSL连接详解&lt;/a&gt;。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;TCP&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;每个具体的操作，会先使用AsynchronousClient进行连接，服务器使用AsynchronousSocketListener进行监听，在Received事件处理客户端发送来的请求，具体参看TCPFileWorkProvider和WorkV7TCPManager。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;p&gt;&lt;strong&gt;FTP&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用.NET内置的FTPWebRequest，具体参看FTPFileWorkProvider。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;大数据的传输&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在下一个大版本中，将会提供对文件同步的支持。文件传输，有很多现成的软件可以做参考。我的设想是：把文件动态切分成多个小块以减少内存的占用，标记之，成功就记录一个，失败/断开后下次传输，则可以断点续传。当然，一样可选压缩算法，以提高传输性能。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000"&gt;代码下载&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击这里下载：&lt;a href="http://files.cnblogs.com/unruledboy/Filio.zip"&gt;Filio.zip&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本项目已经在&lt;a href="http://filio.codeplex.com/"&gt;http://filio.codeplex.com/&lt;/a&gt;&amp;nbsp;开源&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1785452.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/07/26/FilioTechDetails.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/07/20/CloudFileSearch.html</id><title type="text">分布式文件快速搜索-设计与实现(开源/并行)</title><summary type="text">系列文章1.分布式文件快速搜索(多计算机并行/多种算法)2.分布式文件快速搜索的设计与实现(开源/分布式计算/并行)3.分布式文件快速搜索-技术细节分析(开源/并行) 特点1.分布式：支持通过互联网查找任意多计算机，支持TCP/HTTP；2.访问安全:基于角色的访问控制（RBAC），支持定义远程访问的账户、允许访问的目录等；3.快速： a).充分发挥多核CPU的性能，自动进行并行计算；b).自动使...</summary><published>2010-07-20T00:50:00Z</published><updated>2010-07-20T00:50:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/07/20/CloudFileSearch.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/07/20/CloudFileSearch.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;系列文章&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索(多计算机并行/多种算法)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.分布式文件快速搜索的设计与实现(开源/分布式计算/并行)&lt;/p&gt;&#xD;
&lt;p&gt;3.&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/26/FilioTechDetails.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索-技术细节分析(开源/并行)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="page-break-before: always; background-color: #c0c0c0; height: 1px; font-size: 1px; vertical-align: middle" title="Print Page Break"&gt;&amp;nbsp; &lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;1.分布式：支持通过互联网查找任意多计算机，支持TCP/HTTP；&lt;br /&gt;2.访问安全:基于角色的访问控制（RBAC），支持定义远程访问的账户、允许访问的目录等；&lt;br /&gt;3.快速：&lt;/p&gt;&#xD;
&lt;p&gt;a).充分发挥多核CPU的性能，自动进行并行计算；&lt;/p&gt;&#xD;
&lt;p&gt;b).&lt;span style="color: #ff0000"&gt;&lt;strong&gt;自动使用NTFS特性快速检索文件，比普通检索速度提升10倍以上&lt;/strong&gt;；&lt;/span&gt;&lt;br /&gt;4.智能：自动识别同一部机器上的不同物理磁盘，自动加速；&lt;br /&gt;5.高效：哈希值、全文索引快速存取，网络压缩传输；&lt;br /&gt;6.可扩展性内容搜索：内容匹配、全文索引，支持接口；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;前世&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;这个程序的灵感，可以参考这里详细的说明：&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索(多计算机并行/多种算法)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原来的目的只是查找本计算机的重复文件，因为3TB的磁盘空间，放了太多电影、图片、音乐，有不少是重复。刚开始，对每个文件内容都进行哈希值计算，速度非常慢。后来改成先用文件大小碰撞，碰撞后重复的几率就极大地减少了，然后再进行文件内容哈希，速度就有了巨大的提升。再后来，支持了文件名、文件时间和属性等过滤条件，可用性也增大了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;但是我不满足现有的速度，觉得现在的CPU都是多核的，我们可以使用多线程来充分利用多核的威力。单纯的多线程处理容易，new Thread就能跑了，但我们的目的是把大量的查找任务切割，分而治之，然后同时执行，并等待所有任务都完成再继续下一步工作，这就是并行计算的目的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;.NET 3.5 SP1开始有了&lt;a href="http://msdn.microsoft.com/en-us/concurrency/bb896007.aspx"&gt;Parallel Extensions&lt;/a&gt;，4.0内置了Parallel Processing Library(PPL)，当然还有一系列的相关类，如ConcurrentDictionary等（终于解决了2.0引入的Dictionary不是线程安全需要自己手工封装的问题了）。有了这些，我们就可以进行并行计算了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在引入了多线程检索文件之后，我还不满足现有的速度。经过分析，可以判断检索的文件是否在不同的物理磁盘（不是一个磁盘的不同分区），则可以在本机动态使用并行计算。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我还不满足目前的功能：局限于现有计算机，作为不大。日常工作，我们需要对不同的计算机进行搜索，当然，都是局域网内，我们可以映射网络磁盘。但如果是互联网上的计算机，你就无能为力了。所以就有了现在的网格文件快速搜索。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;必须说明的是，网格文件快速搜索不是一个完整的软件，只是闲得头痛而拿来练手的实验性程序，目前能做的只是检索、删除相同/不同计算机上的文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;今生&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;所谓网格，就是分布式，跟Web2.0所谓Tag就是分类一样，互联网包装的概念层出不穷。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;要实现在不同的计算机之间检索文件，并聚合结果，我们需要做的工作颇多。首先，我参考了google的MapReduce。MapReduce，实际就是2个步骤，分配工作，然后聚合结果。在对多个计算机进行检索，就是分配多个任务，每个任务检索指定的计算机，等待所有检索任务完成，再聚合结果。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;接着，我们需要对任务进行分配。分配的原则是远程按机器分组，本地按磁盘分组。在分配好任务之后，我们需要在每个计算机运行一个监听程序接受其它机器的请求。监听使用的是异步TCP，使用事件来通知程序进行业务处理。在监听程序运行后，客户端判断要检索的文件夹位于远程计算机，使用异步TCP连接，连接成功后，发送要检索的文件夹以及身份信息，在通过身份认证之后，便可以进行文件检索。当检索完成后，返回结果给请求端，请求端在所有计算机的检索都完成后，对结果进行组合。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果远程计算机HTTP无法连接（如监听程序没有启动），会自动尝试TCP链接，如果仍然失败会自动容错并忽略。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在，网格文件快速搜索正式成为了文件搜索，而不是以前的重复文件查找了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;搜索流程&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上述的步骤只是大概的过程，实际搜索流程要更复杂。整个搜索过程分2大步：第一步是根据文件的大小/名称/时间/属性等进行过滤，然后对存在相同的文件再进行文件内容哈希值判断。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对于互联网上的机器搜索，第一步必须返回所有搜索内容，而不是仅仅返回重复的内容，因为我们现在检索不是本地计算机，是多个互联网计算机，譬如计算机A存在文件1.jpg，计算机B也存在同样的1.jpg，但你必须把计算机A和B的结果聚合了才知道2个jpg文件相同，所以检索各个计算机的文件，第一次回返回所有文件信息，在结果返回聚合后，得出大小/名称/时间/属性相同的结果，再对这些文件进行文件内容哈希值处理。文件内容哈希值的处理过程跟文件属性检索类似，但是哈希值是以磁盘文件形式缓存了，每次获取文件内容哈希值之前，先判断文件的基本属性（文件名、大小、修改时间）是否与哈希数据库一致，如果匹配，使用数据库中的值，否则计算新的哈希值。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对于文件内容匹配，分3种情况：&lt;/p&gt;&#xD;
&lt;p&gt;1.完全匹配：使用哈希值判断，哈希值会在本地缓存；&lt;/p&gt;&#xD;
&lt;p&gt;2.内容包含：运行时判断；&lt;/p&gt;&#xD;
&lt;p&gt;3.全文索引：对可以抽取内容的文件进行动态索引，本地缓存；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;全文索引支持接口扩展，目前内置了对微软的IFilter接口的实现，即将添加对lucene.net和hubbledotnet的支持。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;具体流程看下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/253705/o_FlowChart.png" /&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;将来&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;你可以充分发挥想象力，把它应用到不同的领域。如果你应用了，记得告诉我，我会很高兴它能被别人使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;TODO&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;参看&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索(多计算机并行/多种算法)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;参看&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索(多计算机并行/多种算法)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;和下面的代码。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000"&gt;代码下载&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击这里下载：&lt;a href="http://files.cnblogs.com/unruledboy/Filio.zip"&gt;Filio.zip&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实际使用，不需要V1*-V5*这些类，现在只是用来对比测试速度的，如果不测试，可以删除这些类。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本项目已经在&lt;a href="http://filio.codeplex.com/"&gt;http://filio.codeplex.com/&lt;/a&gt;&amp;nbsp;开源&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1781051.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/07/20/CloudFileSearch.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html</id><title type="text">分布式文件快速搜索V7.0(多计算机并行)</title><summary type="text">系列文章1.分布式文件快速搜索V7.0(多计算机并行/多种算法)2.分布式文件快速搜索的设计与实现(开源/分布式计算/并行)3.分布式文件快速搜索-技术细节分析(开源/并行) 前言这个话题很古老了，用C#实现的也很多，很明显我是在造轮子了。不过我今晚闲得头疼，在codeplex碰见看见一个项目，就是找重复文件的，项目代码我没看，我只是想找事情做。对开发人员来说，舒展一下手指的最佳办法是敲代码了。我...</summary><published>2010-07-13T12:19:00Z</published><updated>2010-07-13T12:19:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;系列文章&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.分布式文件快速搜索V7.0(多计算机并行/多种算法)&lt;/p&gt;&#xD;
&lt;p&gt;2.&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/20/CloudFileSearch.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索的设计与实现(开源/分布式计算/并行)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3.&lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/07/26/FilioTechDetails.html"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;分布式文件快速搜索-技术细节分析(开源/并行)&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="page-break-before: always; background-color: #c0c0c0; height: 1px; font-size: 1px; vertical-align: middle" title="Print Page Break"&gt;&amp;nbsp; &lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个话题很古老了，用C#实现的也很多，很明显我是在造轮子了。不过我今晚闲得头疼，在codeplex碰见看见一个项目，就是找重复文件的，项目代码我没看，我只是想找事情做。对开发人员来说，舒展一下手指的最佳办法是敲代码了。我最喜欢通过写代码来学东西了，看着枯燥的书本就没劲。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;找重复文件，首先是要获取文件的特征，很久以前用CRC，虽然最近MD5已经给&lt;a href="http://dev.csdn.net/author/ooxee/697f44fe43f542028ae35ede990590c2.html" target="_blank"&gt;&lt;span style="color: #0000ff"&gt;中国某大学研究员验证不可靠&lt;/span&gt;&lt;/a&gt;，不过我还是喜欢MD5:)。你可以选择SHA1，换个类名就可以了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;实现&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实现的办法很简单，就是把所有文件的特征都算出来，然后比较。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;问题是，如果盲目地对每个文件都先获取哈希特征，再进行比较，那会很浪费时间，譬如你的磁盘没有重复文件，或者有些很巨大的不重复文件，那你就要把绝大部分时间浪费在无谓的哈希获取上了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;所以，我们先使用文件大小进行碰撞，再对相同大小的进行碰撞，可以极大地提高效率。为什么选择文件大小呢？因为如果文件大小不一样，那就不可能内容重复了吧？&lt;strike&gt;&lt;span style="color: #3366ff"&gt;为什么不同时选择文件的修改时间？文件修改时间不一样，文件内容也是可以一样的，对不？既然我们的目的只是找内容相同的文件（不是文件名相同），那我们就可以无视文件名和文件修改时间了&lt;/span&gt;&lt;/strike&gt;。允许选择不同的特征组合，譬如先是单纯的文件大小，或者文件大小+文件名+创建时间。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;实现过程是用Dictionary来根据特征分组，碰撞（相同文件内容）就放到该特征下的重复文件列表，最后找出所有重复的文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;程序很简单，主要是原始文件和重复文件的选择。函数可以指定重复目录，如果匹配到是在重复目录下的，就认为是可删除的（相对保留原始文件而言，本程序没有删除代码。。。）重复的文件，如果没有指定重复目录，则自动选择第一个文件为原始文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;并行的实现&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一直想用多线程来实现提速，今晚闲得头疼，就简陋地实现。大概实现步骤：因为不是.NET3.5/4，所以没有PPL，只能模拟并行了：&lt;a  onmousedown="return clk(this.href,'','','','3','','0CCoQFjAC')" href="http://blog.robvolk.com/2009/02/c-parallelism-executing-methods-in.html"&gt;&lt;font size="4"&gt;&lt;font color="#cc0033"&gt;C#&lt;/font&gt;&lt;font color="#551a8b"&gt; Parallelism: Executing Methods in &lt;/font&gt;&lt;font color="#cc0033"&gt;Parallel&lt;/font&gt;&lt;font color="#551a8b"&gt; in .NET &lt;/font&gt;&lt;font color="#cc0033"&gt;3.5&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;。原理是封装了ThreadPool，结合ManualResetEvent和WaitHandle.WaitAll等待所有线程完成。在.NET 2.0中，Dictionary不是线程安全的，又不想花时间自己写封装，就只有在网上找了个封装好的线程安全的Dictionary。多线程的思想是：分配任务，分而治之。业务逻辑是自行切割要检索的文件夹到不同的线程，得到结果后，最终实现并行计算。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;网上发现的最quick &amp;amp; dirty的代码&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.hosca.com/blog/post/2010/04/13/using-LINQ-to-detect-and-remove-duplicate-files.aspx" target="_blank"&gt;http://www.hosca.com/blog/post/2010/04/13/using-LINQ-to-detect-and-remove-duplicate-files.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个代码极大地让感到我今晚写的代码很冗余。。。它用了几个Linq的语句：Select所有文件，GroupBy哈希值，然后ForEach删除。。。Linq是很精妙。。。不过这个办法跟我的老慢速算法是大同小异的，所以速度也是可以无视的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: red"&gt;我实现的代码(让你容易找点......)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;老规矩，vs2005+c#2.0，quick &amp;amp; dirty，没linq，没var，没有自动属性。不要跟代码规范较真，也不要纠缠为什么代码都放一个文件，纯粹是为了方便粘贴到博客而已，在产品开发中，6000多个手工写的类我都是很有组织地归类的:)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;代码中有7个算法：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;WorkV1：最原始的，对每个文件都进行哈希值比对；&lt;/p&gt;&#xD;
&lt;p&gt;WorkV2：较新的算法，先用文件大小（或加上文件名、创建日期、修改日期等）进行过滤，匹配的文件组合才进行哈希值比对；&lt;/p&gt;&#xD;
&lt;p&gt;WorkV3：新的多线程算法，把多线程应用到文件检索和文件哈希值获取；&lt;/p&gt;&#xD;
&lt;p&gt;WorkV4：测试发现如果把多线程应用到文件读取，则性能急剧下降，但仅获取文件信息，则有很大提升，虽然瓶颈在文件读取，但起码在检索信息上，比起V2有了提升；&lt;/p&gt;&#xD;
&lt;p&gt;WorkV5：新的算法，文件检索使用多线程，文件哈希值获取则动态判断文件所在地物理磁盘，如果不是同一个物理磁盘，则是使用多线程，否则采用跟V2一样的算法；因为判断物理磁盘引入了System.Management.dll，使用了DriveIdentification条件编译；&lt;/p&gt;&#xD;
&lt;p&gt;WorkV6：新的算法，支持对互联网上的计算机进行搜索，哈希值的快速存取，文件内容搜索，全文索引；&lt;/p&gt;&#xD;
&lt;p&gt;WorkV7：最新的算法，添加了对协议提供者模式的支持，可以自由添加各种访问协议；&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在这里比较性能其实意义不大，以为不同机器比较不同的文件，差异太大了，譬如你的机器有2个文件，一个巨大，一个渺小，用新的快速算法，微秒间完成，用老的慢算法，则你可能要去睡一觉。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;程序有3个条件编译：DRIVEID启用物理磁盘识别（需要引用System.Management.dll）,VERBOSE启用详细的调试信息,LoG启用保存日志&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看代码，判断支持多个文件夹。先Find出重复文件组合(指纹/相同文件列表)，再用FindAll找出可以删除的所有重复文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;如果要实现分布式搜索，必须在被搜索的计算机运行WorkV7Manager的实例，具体参看代码。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;本地搜索&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('8f0fcc6b-9017-46dc-b850-9f707e658d79')"&gt;&lt;img style="display: none" id="code_img_opened_8f0fcc6b-9017-46dc-b850-9f707e658d79"  onclick="cnblogs_code_hide('8f0fcc6b-9017-46dc-b850-9f707e658d79',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_8f0fcc6b-9017-46dc-b850-9f707e658d79" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;duplicateFolder&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;d:\backup&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;MatchFileItem&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;result;&lt;br /&gt;BaseWork&amp;nbsp;worker&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;WorkV6();&lt;br /&gt;result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;worker.Find(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FileURI[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FileURI(&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;c:\download\&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FileURI(duplicateFolder)}&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;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;{&amp;nbsp;},&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;SearchTypes.Size&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SearchTypes.Name,&amp;nbsp;MatchTypes.ContentSame);&lt;br /&gt;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;duplicatedFiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;worker.FindAll(result,&amp;nbsp;duplicateFolder);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;br /&gt;分布式搜索&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;初始化&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;first&amp;nbsp;initialize&amp;nbsp;some&amp;nbsp;settings&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;WorkUtils.Initialiaze(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(),&amp;nbsp;CompressionMethods.GZip,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Net.WebProxy());&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;服务器端&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('c8ae1ea7-8520-4d2b-8967-4c686e1c0f35')"&gt;&lt;img style="display: none" id="code_img_opened_c8ae1ea7-8520-4d2b-8967-4c686e1c0f35"  onclick="cnblogs_code_hide('c8ae1ea7-8520-4d2b-8967-4c686e1c0f35',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_c8ae1ea7-8520-4d2b-8967-4c686e1c0f35" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;BaseManager&amp;nbsp;manager&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;WorkV6HTTPManager();&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;you&amp;nbsp;can&amp;nbsp;use&amp;nbsp;WorkV6TCPManager&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;UserAccess&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;users&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;UserAccess&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;();&lt;br /&gt;users.Add(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;user&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserAccess(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;user&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;pass&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;UserRights.Discover&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;|&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserRights.Search));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;allowedPaths&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;e:\temp\New&amp;nbsp;Folder&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;};&lt;br /&gt;manager.Start(users,&amp;nbsp;allowedPaths,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;8880&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;客户端&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('076b3c72-d3f3-4b2f-adab-26f69a50c3cf')"&gt;&lt;img style="display: none" id="code_img_opened_076b3c72-d3f3-4b2f-adab-26f69a50c3cf"  onclick="cnblogs_code_hide('076b3c72-d3f3-4b2f-adab-26f69a50c3cf',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_076b3c72-d3f3-4b2f-adab-26f69a50c3cf" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;FileURI&amp;nbsp;remoteFolder&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FileURI(&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;202.2.3.4:8880/e:\temp\New&amp;nbsp;Folder&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;user&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;pass&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;ObjectTypes.RemoteURI);&lt;br /&gt;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;MatchFileItem&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;result;&lt;br /&gt;result&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Worker.Find(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FileURI[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FileURI(&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;c:\download\&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),&amp;nbsp;&amp;nbsp;remoteFolder&amp;nbsp;}&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;&amp;nbsp;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;{&amp;nbsp;},&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;YOUR&amp;nbsp;KEYWORD&amp;nbsp;HERE&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;SearchTypes.Size,&amp;nbsp;MatchTypes.ContentExtract);&lt;br /&gt;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;matchFiles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Worker.FindAll(result,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;已知问题&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本程序并没有考虑因为文件量巨大而会造成内存不足等问题，这个就留到以后我闲得更头痛的时候再考虑吧。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;如果你要同时测试多种算法，那是不可能的，因为所有算法的瓶颈是对文件的哈希值获取，而这个方法允许Windows对已经访问的文件进行缓存和预取（pre-fetch），这样当你测试完第一个算法，再用第二个算法的时候，就会发现秒级完成。所以你每测试出一个结果，就应该重启电脑。。。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;未知问题&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果你发现有什么bug，麻烦告诉我，我喜欢学习:)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;改进&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.2010-7-16 v1；&lt;/p&gt;&#xD;
&lt;p&gt;2.2010-7-14 v2&amp;nbsp;添加了对选择文件名/修改时间/创建时间为重复标准的支持；重构代码，引入了基类，方便测试；&lt;/p&gt;&#xD;
&lt;p&gt;3.2010-7-14 v2.1 再次重构，并添加了对指定文件类型的支持，允许正则表达式；&lt;/p&gt;&#xD;
&lt;p&gt;4.2010-7-15 v3 增加了对多线程的支持，速度提升；&lt;/p&gt;&#xD;
&lt;p&gt;5.2010-7-16 v3.1 修正了从v2开始出现的重复测试问题；&lt;/p&gt;&#xD;
&lt;p&gt;6.2010-7-16 v4 仅应用多线程于文件查找；&lt;/p&gt;&#xD;
&lt;p&gt;7.2010-7-16 v5 动态支持多磁盘多线程提速；&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;8.2010-7-16 v5.1 增加了对使用文件属性过滤的支持，并重构了部分代码，并修正了动态多磁盘的判断；&lt;/p&gt;&#xD;
&lt;p&gt;9.2010-7-19 v5.2 允许单纯地查找匹配大小/文件名而不计算哈希值，增加了对文件名过滤的支持，并重构了部分代码，加入了对动态多磁盘的容错；&lt;/p&gt;&#xD;
&lt;p&gt;10.2010-7-20 v6 实现了网格搜索&lt;/p&gt;&#xD;
&lt;p&gt;10.2010-7-20 v6.1 添加了对文件发现的支持，如果远程计算机没有发布可访问的目录，则不进行搜索&lt;/p&gt;&#xD;
&lt;p&gt;10.2010-7-20 v6.2 添加了对删除重复文件的支持，并改造了用户访问机制&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;11.2010-7-21 v6.3 添加了对快速存取哈希值的支持；&lt;/p&gt;&#xD;
&lt;p&gt;12.2010-7-21 v6.4 修正了快速存取哈希值的异常问题；&lt;/p&gt;&#xD;
&lt;p&gt;13.2010-7-23 v6.6 添加了对HTTP协议、内容匹配、全文索引的支持；&lt;/p&gt;&#xD;
&lt;p&gt;14.2010-7-26 v6.7 添加了对HTTP、TCP压缩传输的支持；&lt;/p&gt;&#xD;
&lt;p&gt;15.2010-7-28 v6.8 添加了NTFS USN Journal技术，检索文件信息速度提升10倍，源代码：&lt;a href="http://filio.codeplex.com/SourceControl/changeset/changes/74232"&gt;http://filio.codeplex.com/SourceControl/changeset/changes/74232&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;16.2010-7-31 v6.9 添加了对基于角色的访问控制（RBAC）的权限管理；&lt;/p&gt;&#xD;
&lt;p&gt;17.2010-8-11 v7.0 添加了对协议提供者模式的支持；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;TODO&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strike&gt;1.目前来看，改进速度的办法是多线程了，多个线程获取目录文件，然后多个线程对文件列表进行哈希获取。&lt;/strike&gt; 在V3中添加了对多线程的支持；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strike&gt;2.添加对分布式（互联网上的机器）的支持；&lt;/strike&gt;在v6中添加了对网格搜索的支持；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strike&gt;3.添加对删除文件的支持；&lt;/strike&gt; 在v6.1中添加了对删除文件的支持；&lt;/p&gt;&#xD;
&lt;p&gt;4.&lt;strike&gt;文件内容哈希值存储，以便以后快速获取（同时记录文件名、大小、修改时间和哈希值，任一不匹配则认为文件改变了）&lt;/strike&gt;在v6.3中实现了哈希值快速存取&lt;/p&gt;&#xD;
&lt;p&gt;5.&lt;strike&gt;添加对HTTP协议的支持&lt;/strike&gt;；在v6.6中实现了对HTTP协议的支持&lt;/p&gt;&#xD;
&lt;p&gt;6.&lt;strike&gt;添加对搜索文件内容的支持：完全匹配、全文索引&lt;/strike&gt;；在v6.6中添加了对文件内容匹配、全文索引的支持；&lt;/p&gt;&#xD;
&lt;p&gt;7.添加对lucene.net和hubbledotnet的支持；&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;8.&lt;strike&gt;添加对缓存的压缩支持&lt;/strike&gt;；在V6.6添加了对缓存压缩的支持；&lt;/p&gt;&#xD;
&lt;p&gt;9.&lt;strike&gt;添加对网络传输(HTTP/TCP)的压缩支持&lt;/strike&gt;；在v6.7添加了对网络压缩传输的支持；&lt;/p&gt;&#xD;
&lt;p&gt;10.添加对文件同步的支持：chunck/index/count，断点续传&lt;/p&gt;&#xD;
&lt;p&gt;11.&lt;strike&gt;添加对基于角色的访问控制（RBAC）&lt;/strike&gt;；在v6.9中添加了对其的支持；&lt;/p&gt;&#xD;
&lt;p&gt;12.如果检索互联网上的计算机，如果指定搜索目录存在大量的文件，则返回结果可能会因为太大而造成网络超时等问题；&lt;/p&gt;&#xD;
&lt;p&gt;13.添加对HTTP/TCP的SSL连接的支持；&lt;/p&gt;&#xD;
&lt;p&gt;14.&lt;strike&gt;添加对NTFS的USNJournal支持，可以比普通的检索文件信息(Directory.GetFiles)快10倍。。。&lt;/strike&gt; 在v6.8中添加了对其的支持&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000"&gt;代码下载&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击这里下载：&lt;a href="http://files.cnblogs.com/unruledboy/Filio.zip"&gt;Filio.zip&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;项目地址&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本项目已经在&lt;a href="http://filio.codeplex.com/"&gt;http://filio.codeplex.com/&lt;/a&gt;&amp;nbsp;开源&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1776735.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/07/13/DuplicatedFileFinder.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/07/12/SQLServerStoredProcedureDocumenter.html</id><title type="text">自动输出SQL Server对象依赖列表到EXCEL文件</title><summary type="text">前言类似的软件很多年前写过，不过现在在新国家，新环境，印度佬（我囧）资深系统分析员要求我：给现有的数据库的所有存储过程分别列举所有依赖的对象。需求现在数据库很老很大，表不多，200来个，但数据量很大：最大的数据表2亿6千万条，每天增加50多w，925个存储过程。系统大，耦合度很高，牵一发而动全身。人员变动频繁，接手的人员要在修改之前，就得花相当长的时间来分析关联性。所以，印度资深系统分析员要求我在...</summary><published>2010-07-12T06:25:00Z</published><updated>2010-07-12T06:25:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/07/12/SQLServerStoredProcedureDocumenter.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/07/12/SQLServerStoredProcedureDocumenter.html"/><content type="html">&lt;p&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;类似的软件很多年前写过，不过现在在新国家，新环境，印度佬（我囧）资深系统分析员要求我：给现有的数据库的所有存储过程分别列举所有依赖的对象。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在数据库很老很大，表不多，200来个，但数据量很大：最大的数据表2亿6千万条，每天增加50多w，925个存储过程。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;系统大，耦合度很高，牵一发而动全身。人员变动频繁，接手的人员要在修改之前，就得花相当长的时间来分析关联性。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;所以，印度资深系统分析员要求我在一个EXCEL文件中，把925个存储过程的所有依赖的对象（表、函数、视图、存储过程等等）都列举出来。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;手工逐个打开存储过程去做，对写软件的人来说是很傻的事情，一般重复性工作，如果预计耗时超过3分钟，我就会卷起袖子写个代码。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;工作内容有3部分：&lt;/p&gt;&#xD;
&lt;p&gt;1.获取所有的存储过程。我们可以用&lt;font color="#800000"&gt;sysobjects&lt;/font&gt;这个系统表，它存储了所有的表、存储过程、视图、函数等。其中存储过程的xtype是P，CLR存储过程，类型是PC；函数的类型是FN/IF或TF，CLR函数类型是FS；视图类型是V；表类型是U。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. 获取某存储过程所依赖的对象，当然是先google了。很久之前我就知道可以用系统存储过程&lt;strong&gt;sp_depends&lt;/strong&gt;来获取，不过还是应该看看还有什么更好的办法。首先我发现这个：&lt;a href="http://www.mssqltips.com/tip.asp?tip=1294" target="_blank"&gt;http://www.mssqltips.com/tip.asp?tip=1294&lt;/a&gt;&amp;nbsp;。作者研究出4种办法：INFORMATION_SCHEMA.ROUTINES/sp_depends/syscomments/sp_MSdependencies。其中就有我一直在用的&lt;strong&gt;sp_depends&lt;/strong&gt;。其它办法有的霸王硬上弓：用&lt;font face="Courier New"&gt;charindex来遍历存储过程内容，或者用LIKE来判断。。。。。我服了，写代码的风格千差万别，一些是[Foo]，一些是Foo，而且不同的存储过程名称可能存在完全给另外一个包含，譬如Foo Foo1 AFoo等。&lt;/font&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看完之后，我还是觉得使用&lt;strong&gt;sp_depends相对靠谱。&lt;/strong&gt;&lt;span&gt;为什么说&amp;#8220;相对靠谱&amp;#8221;呢？因为我发现它某些情况下也会没有返回所有依赖的，这应该是SQL Server的bug吧？如果要把所有依赖都找回来，你可以去修改被遗忘的引用存储过程，随便加个空行，运行（就是保存结果），你会发现之前没有显示的依赖终于出现了。而且，&lt;strong&gt;sp_depends&lt;/strong&gt;会输出重复的记录。。。所以我们在代码中要剔除掉。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;3. 既然是输出到EXCEL文件，我们就需要找相应的代码。在这个网站已经有很多EXCEL文件生成的代码了，譬如NPOI。我最后采用了GemBox的，因为够轻便。本来想用更轻便的&lt;a href="http://myxls.in2bits.org/" target="_blank"&gt;MyXLS&lt;/a&gt;，但发现它不支持单背景色。当然你也可以用别的，譬如XML格式的EXCEL文件，这是你个人的选择了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;解决了上述的3个问题，我们就可以大干一场了。我用VS2005+C#2.0，因为公司还是在用古老的XP搭配VS2005，鬼佬国家要求什么都正版，自然不会像我们在中国那样随便就升级到2010了。所以只能放弃LINQ，老老实实地写老派的代码了。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;以下代码没有什么特别的，都是循环所有存储过程，然后循环每个存储过程的依赖对象，然后排序输出（先按照类型，然后按照名称）。本来想用DataTable.Select对多个字段排序，但后来发现没效果，也没心思去研究为什么，干脆就改成写一个IComparer。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;代码写得很quick and dirty，10来分钟的事情，不要跟代码规范较真。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000"&gt;代码（让你容易找点。。。）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('cca9fdc4-ecff-4ebe-9568-6b749c16a8fb')"&gt;&lt;img style="display: none" id="code_img_opened_cca9fdc4-ecff-4ebe-9568-6b749c16a8fb"  onclick="cnblogs_code_hide('cca9fdc4-ecff-4ebe-9568-6b749c16a8fb',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_cca9fdc4-ecff-4ebe-9568-6b749c16a8fb" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.IO;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Drawing;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Data;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Data.SqlClient;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GemBox.Spreadsheet;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SQLServerDocumenter&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Program&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Main(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(args.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;database&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;datasource&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;user&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;password&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;}&lt;br /&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;db&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dataSource&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty;&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty;&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;password&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;args[&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty;&lt;br /&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;&amp;nbsp;Work&amp;nbsp;work&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Work();&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;&amp;nbsp;work.Progress&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;EventHandler&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;ProgressEventArgs&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(OnWorkProgress);&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;&amp;nbsp;work.Run(db,&amp;nbsp;dataSource,&amp;nbsp;user,&amp;nbsp;password);&lt;br /&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;&amp;nbsp;Console.WriteLine();&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;&amp;nbsp;Console.WriteLine(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;all&amp;nbsp;done!&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;Console.Read();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OnWorkProgress(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;ProgressEventArgs&amp;nbsp;e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;Console.WriteLine(e.Status);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Work&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;event&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;EventHandler&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;ProgressEventArgs&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Progress;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Run(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Database,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataSource,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserName,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Password)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;ExcelFile&amp;nbsp;xls&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ExcelFile();&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;&amp;nbsp;ExcelWorksheet&amp;nbsp;sheet&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xls.Worksheets.Add(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Dictionary&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;CellStyle&amp;nbsp;nameStyle&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CellStyle(xls);&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;&amp;nbsp;nameStyle.FillPattern.SetSolid(Color.DarkGray);&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;&amp;nbsp;nameStyle.Font.Color&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Color.Black;&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;&amp;nbsp;nameStyle.Font.Weight&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ExcelFont.BoldWeight;&lt;br /&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;{0}&amp;nbsp;database&amp;nbsp;dictionary&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;Database);&lt;br /&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Name&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Style&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nameStyle;&lt;br /&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Dependencies&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;].Style&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nameStyle;&lt;br /&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Type&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;sheet.Cells[&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;].Style&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nameStyle;&lt;br /&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;connectionString&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Password={0};Persist&amp;nbsp;Security&amp;nbsp;Info=True;User&amp;nbsp;ID={1};Initial&amp;nbsp;Catalog={2};Data&amp;nbsp;Source={3}&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;Password,&amp;nbsp;UserName,&amp;nbsp;Database,&amp;nbsp;DataSource);&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(SqlConnection&amp;nbsp;connection&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SqlConnection(connectionString))&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;&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connection.Open();&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;index&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;5&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddObjects(connection,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;'P'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Stored&amp;nbsp;Procedures&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_alterdiagram&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_creatediagram&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_dropdiagram&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_helpdiagramdefinition&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_helpdiagrams&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_renamediagram&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;sp_upgraddiagrams&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;}),&amp;nbsp;sheet,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;index);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddObjects(connection,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;'FN','IF','TF'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Functions&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(),&amp;nbsp;sheet,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;index);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddObjects(connection,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;'V'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Views&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(),&amp;nbsp;sheet,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;index);&lt;br /&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;connection.Close();&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;&amp;nbsp;}&lt;br /&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;path&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;\&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Database&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;.xls&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;xls.SaveXls(path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;AddObjects(SqlConnection&amp;nbsp;Connection,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Types,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Name,&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;IgnoreNames,&amp;nbsp;ExcelWorksheet&amp;nbsp;Sheet,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;ref&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Index)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;CellStyle&amp;nbsp;itemStyle&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CellStyle();&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;&amp;nbsp;itemStyle.FillPattern.SetSolid(Color.LightGray);&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;&amp;nbsp;itemStyle.Font.Color&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Color.Black;&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;&amp;nbsp;itemStyle.Font.Weight&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ExcelFont.BoldWeight;&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;&amp;nbsp;CellStyle&amp;nbsp;typeStyle&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CellStyle();&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;&amp;nbsp;typeStyle.FillPattern.SetSolid(Color.Yellow);&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;&amp;nbsp;typeStyle.Font.Color&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Color.Black;&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;&amp;nbsp;typeStyle.Font.Weight&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ExcelFont.BoldWeight;&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;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Name;&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;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Style&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;typeStyle;&lt;br /&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;&amp;nbsp;Index&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&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;&amp;nbsp;DataSet&amp;nbsp;data&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataSet();&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(SqlCommand&amp;nbsp;command&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SqlCommand(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;sysobjects&amp;nbsp;WHERE&amp;nbsp;XTYPE&amp;nbsp;IN&amp;nbsp;({0})&amp;nbsp;ORDER&amp;nbsp;BY&amp;nbsp;NAME&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;Types),&amp;nbsp;Connection))&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;&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SqlDataAdapter&amp;nbsp;adapter&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SqlDataAdapter(command);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adapter.Fill(data);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(data.Tables.Count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataTable&amp;nbsp;objects&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;data.Tables[&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&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: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objects.Rows.Count;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&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: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objectName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objects.Rows[i][&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ToString();&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;&amp;nbsp;&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: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;IgnoreNames.Contains(objectName))&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;&amp;nbsp;&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;br /&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;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objectName;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Style&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;itemStyle;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataSet&amp;nbsp;data2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DataSet();&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(SqlCommand&amp;nbsp;command2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SqlCommand(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;exec&amp;nbsp;sp_depends&amp;nbsp;'{0}'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;objectName),&amp;nbsp;Connection))&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;adapter&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SqlDataAdapter(command2);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adapter.Fill(data2);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(data2.Tables.Count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;DataTable&amp;nbsp;dependencies&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;data2.Tables[&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;uniqueDependencies&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Dictionary&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;j&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;j&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dependencies.Rows.Count;&amp;nbsp;j&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;itemName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dependencies.Rows[j][&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ToString();&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(itemName.ToLower().StartsWith(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;dbo.&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;itemName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;itemName.Substring(&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;uniqueDependencies.ContainsKey(itemName))&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uniqueDependencies.Add(itemName,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(itemName,&amp;nbsp;dependencies.Rows[j][&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;type&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ToString()));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;allItems&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;item&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;uniqueDependencies)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;&amp;nbsp;allItems.Add(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(item.Value.Key,&amp;nbsp;item.Value.Value));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;allItems.Sort(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;KVPComparer());&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;item&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;allItems)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;&amp;nbsp;Index&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;item.Key;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;item.Value;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;}&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;Index&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;(N/A)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;br /&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;Index&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddProgress(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;({0}/{1})&amp;nbsp;{2}&amp;nbsp;done&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;objects.Rows.Count,&amp;nbsp;objectName));&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;&amp;nbsp;&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;br /&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;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddProgress(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;({0}/{1})&amp;nbsp;{2}&amp;nbsp;ignored&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;objects.Rows.Count,&amp;nbsp;objectName));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sheet.Cells[Index,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;].Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;(N/A)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;}&lt;br /&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;&amp;nbsp;Index&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;AddProgress(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Status)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Progress&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Progress(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ProgressEventArgs(Status));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ProgressEventArgs&amp;nbsp;:&amp;nbsp;EventArgs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;status;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Status&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;status;&amp;nbsp;}&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;status&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;value;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ProgressEventArgs(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Status)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;status&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Status;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;internal&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;KVPComparer&amp;nbsp;:&amp;nbsp;IComparer&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Compare(KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;x,&amp;nbsp;KeyValuePair&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;compare&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Compare(x.Value,&amp;nbsp;y.Value);&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(compare&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Compare(x.Key,&amp;nbsp;y.Key);&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;compare;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;span&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用很简单，编译（你得找个EXCEL输出代码。。。），在命令行（改成Win应用也可以啊）输入3个参数：数据库名、服务器名和密码。当然，大家都有自己的品味，喜欢怎么改输出格式就怎么改吧。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/span&gt;结论&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;印度资深系统分析员只是让我给个EXCEL文件，没有让我写代码，所以把我自己的研究成果发上来也无伤大雅。一般我都喜欢把写的东西弄成可重用的，不仅仅为了一个固定的目的，所以也便有了4个参数和同时输出函数和视图的依赖列表。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后输出的的EXCEL文件有6000多行，我真怀疑到底有多少人愿意看这个文件。。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;题外话&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其实漂洋过海来了澳洲，来到这个都是印度开发人员的公司，经常让我做些工作，最后都不采纳的，或许，印度人跟哪个国家的人都一样，对the new guy表现好的就要让他halt一下。。。枪打出头鸟，人怕出名猪怕壮，新人在试用期间又要给老板看表现，但又不能让老员工有压力，混口饭吃不容易。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;譬如让我用了一个星期研究SSIS，成果都出来了，最后给无视了。所以，也便有了 &lt;a  href="http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html" target="_blank"&gt;&lt;font color="#000000" face="Arial"&gt;&lt;span style="color: #0000ff"&gt;数据处理利器-SSIS入门与进阶&lt;/span&gt;&lt;/font&gt;&lt;/a&gt;&amp;nbsp;这篇文章，省得让我的研究给扔到大海。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;譬如让我研究给那个巨大的数据表分区，我辛苦写了详细的计划，步骤，相关的SQL，注意事项等等等，最后我问起来，一句话答复：我不会应用的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;另外一个题外话：同事给报表执行一个复杂的SQL查询（存储过程），以前都是在几秒内完成的，某天开始，要4分钟，怎么改都是要4分钟，任何机器都是，但在数据库本身所在的SSMS跑却正常。后来在业务执行插入SET ARITHABORT ON，问题解决。最后发现是SQL Plan出了问题，只需要修改一下存储过程（随便加个空行），保存便可，不需要SET ARITHABORT ON。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;另外第二个题外话，我发现印度程序员的确能做事的，对要做的事情很熟悉，譬如那个资深系统分析员，对新业务的分析是很快捷准确的。不过写的代码和SQL的规范和质量。。。。，就跟大家平时所说的差不多了&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;更新&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2010-07-13 1.增加了对函数和视图的支持；2.增加了对用户名的支持；3.分离了业务逻辑和界面，现在可以Copy&amp;amp;Paste到WinForm/WPF/WebForm/ASP.NET MVC...&lt;/p&gt;&lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1775789.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/07/12/SQLServerStoredProcedureDocumenter.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html</id><title type="text">数据处理利器-SSIS入门与进阶</title><summary type="text">使用SSIS，首先是因为工作需要，其次，在澳洲找工作的2个星期里，我发现招聘需求中有太多技术我没有掌握了，其实这些技术，只需要几天就可以入门，几个星期就可以进阶，为什么不花一点时间去掌握一门新的技术呢？多一门技术与少一门差异是很大的，招聘需求往往会写明必须掌握的技术，你缺一门，你就不好意思打招呼了。SSIS是从MS SQL 2005开始引入的，实际上是DTS的马甲，是SQL Server Inte...</summary><published>2010-06-29T06:42:00Z</published><updated>2010-06-29T06:42:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用SSIS，首先是因为工作需要，其次，在澳洲找工作的2个星期里，我发现招聘需求中有太多技术我没有掌握了，其实这些技术，只需要几天就可以入门，几个星期就可以进阶，为什么不花一点时间去掌握一门新的技术呢？多一门技术与少一门差异是很大的，招聘需求往往会写明必须掌握的技术，你缺一门，你就不好意思打招呼了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;SSIS是从MS SQL 2005开始引入的，实际上是DTS的马甲，是SQL Server Integration Service的缩写。DTS也好，SSIS也罢，都是ETL（Extract Transform Load）工具，一般用来导入数据到数据库。SSIS比普通的ETL更进一步，它是可视化的，用Visual Studio来开发，包文件(*.dtsx)采用的是XML格式。跟Office2007+系列文档扩展名一样，都是???x，代表xml格式，但他没有压缩成zip文件罢了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我在新格式的工作内容是研究SSIS的性能。公司是做能源管理的，每隔一段时间（如15分钟）需要从测量表中提取数据，不断积累后，一个测量表5年的数据有231MB，134万条。目前每天要处理6500多个文件，现有活动数据是3亿条记录。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_1.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;strong style="color: #0000ff"&gt;注意：因为移民到了澳洲悉尼，系统和开发环境全部是英文，我也不知道中文对应是什么，所以以下说明全部使用英文，并加上我猜想的中文。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先使用SSIS创建一个简单的Integration Services Project: File-&amp;gt;New-&amp;gt;Project-&amp;gt;Business Intellegence Projects-&amp;gt;Integration Services Project&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_2.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（新建项目1）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_3.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（新建项目2）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;添加一个Foreach Loop Container&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_4.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;, 双击这个Foreach Loop Container，点击左边的Collection，选择来源文件目录(Folder)，输入文件类型(Files)。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_5.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击Variable Mappings，点击New Variable，在Name输入变量名称。这个变量是目录循环中每个文件的值，稍后会用在每个文件的处理中。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_6.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_7.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;再在里面添加一个Data Flow Task&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_8.PNG" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;，双击这个Data Flow Task，进入了Data Flow标签（Control Flow右边）。因为原始文件是从测量表读取出来然后写到CSV文件的，所以我们使用Flat File Source(就是文本文件，CSV文件也属于这类)。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_9.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;双击Flat File Source，Flat File connection manager，点右边的New新建一个文本文件连接，给连接一个名字，选择一个例子文件，按照你的情况输入header rows to skip(跳过头列)，如果第一列是列名称，你应该输入1。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_10.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_11.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击Advanced(高级)，给每列选择正确的数据类型，确定。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_12.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击Columns（列），给每列起个名字。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_13.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在我们的数据中，都是基本的设备、日期、温度、湿度、气压等等。但某些记录是错误的（譬如没有日期），这些记录就要忽略，日期是细分为：年、月、日、小时、分钟的，必须合并，还有温度、湿度某些情况是没有的，你就要处理为NULL。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对于错误的记录（日期为空），我们要添加一个Conditional Split，在Condition(条件)中输入 &amp;#8220;LEN(TRIM(Year)) &amp;gt; 0&amp;#8221;(只需要判断年是否为空)。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_14.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于表达式，需要特别说明一下：你可以选作左边的变量或者列，或者右边的各种内置函数。你只需要直接拖放变量、列或者函数到输入框便可。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对于完整的日期，我们需要添加一个Derived Column(派生列)，从Conditional Split拖放关系，要求你选择跳转到指定流程的条件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_15.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;双击该派生列，在Expression(表达式)中输入&amp;#8220;Year + "-" + Month + "- " + Day + " " + Hour + ":" + Minute + ":00"&amp;#8221;（构造标准的日期格式，如：2010-06-29 16:11），日期类型选database timestamp（根据你自己的实际情况吧）。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_16.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;对于NULL数值类型，你也需要添加一个派生列，然后在表达式中输入LEN(TRIM(Temperature)) &amp;gt; 0 ? (DT_R8)Temperature : NULL(DT_R8)。这里用DT_R8是因为温度是double。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_17.PNG" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后添加一个导入目标，我们的目的是把数据导入到MS SQL Server，所以添加一个SQL Server Destination，双击进入编辑&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_18.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击New新建一个数据库连接。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_19.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击Mapping（映射），把CSV文件的列对应到数据库表&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/unruledboy/251762/o_20.PNG" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;接下来就是运行了，如果你正确设置，数据自然会导入到数据库。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这里需要注意，SSIS的设计有颇多的bug，譬如下面提及的脚本编译问题，还有在设计器中，不能通过编辑目标数据来直接编辑连接，你要双击下方的控件列表。另外，当你编辑连接，你会发现之前选择的例子文件会丢失，每次你都必须重新选择。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果要发布到SQL Server，你要修改SSIS的项目属性：Project-&amp;gt;(your project name) Properties-&amp;gt;Deployment Utility-&amp;gt;CreateDeploymentUtility-&amp;gt;True。然后双击bin\Deployment下面的Deployment文件，按照提示一步步Next便可（建议安装到MS SQL Server，而不是文件系统）。如果要查看已经安装的，打开SQl Server Management Studio，选择Integration Services，打开。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;在开发SSIS的过程中，你可能会遇到一些诡异的情况。譬如：&lt;br /&gt;1.类型转换，你在Prorgress（进度）标签中可以查看详细的结果，但往往结果都比较含糊。一般都是类型没有选对，譬如SSIS会自动选回字符串类型，你又要手工改回database timestamp&lt;br /&gt;2.目标数据库中的数据表字段变化了，或者来源文件格式变了，你运行，肯定错误，但在Progress(进度)中，你难以看出个门道。一般看见设计图中的出现警告或者错误小图标，你鼠标挪上去停一下，就会给个模糊的提示，双击，会提示你修正。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一些特别情况：&lt;br /&gt;1.内置的控件无法满足需要，怎么办？自己写控件：陈希章同学写的&lt;a id="ctl04_TitleUrl" href="http://www.cnblogs.com/chenxizhang/archive/2009/06/20/1507386.html" target="_blank"&gt;为SSIS编写自定义任务项(Task)之入门篇&lt;/a&gt; 。这里还有另外一个例子：&lt;a href="http://blog.stevienova.com/2009/10/23/ssis-custom-control-flow-component-execute-sql-job-and-wait/" target="_blank"&gt;执行SQL Job并等待其结束&lt;/a&gt;。&lt;/p&gt;&#xD;
&lt;p&gt;2.需要复杂的处理：在Control Flow中用Script Task，在Data Flow中用Script Component；&lt;/p&gt;&#xD;
&lt;p&gt;关于脚本：添加一个Script Task，双击，点击Script(脚本)，如果你是SQL 2005 SP1或以下，你就必须选PrecompileScriptIntoBinaryCode，否则你将无法正确运行。或者你给2005安装SP2；&lt;/p&gt;&#xD;
&lt;p&gt;3.你需要让SSIS执行并尽量等待你去做其他事情（矛盾啊。。。），你可以添加一个Script Task，输入System.Threading.Thread.Sleep(想多长就多长)；&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于变量：你需要注意变量的作用域。一般的作用域是Package(包)。在脚本中，如果你想访问变量，你就必须在ReadOnlyVariables（只读变量）和ReadWriteVariables（可读写变量）中输入变量名称（多个变量用逗号分隔）。然后在编辑脚本代码中，使用Dts.Variables("YourVariableName")来访问变量。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于邮件发送，如果使用内置的Send Mail Task，你会发现无法指定登陆用户名和密码。我改用脚本调用sourceforge上opensmtp，或者，你可以使用MS SQL Server自带的邮件功能，然后用SQL Excute Task执行，譬如：&lt;/p&gt;&#xD;
&lt;p&gt;exec msdb.dbo.sp_send_dbmail @profile_name = 'Foo',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @recipients = 'FooReceiver',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @subject = 'FooSubject',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @body = 'FooBody'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @body_format = 'Text'&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;稍后我会给出使用最老套的c#代码导入数据方式(包括多线程方式等多种方式)，和SSIS比较性能，因为我觉得写c#代码怎么也不能输给SSIS这种重量级的工具啊，所以我卷起袖子就大干一场，写了多种方式，但结果很特别。。。。。。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="background-color: yellow; color: #0000ff"&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/unruledboy/aggbug/1767582.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/unruledboy/archive/2010/06/29/SSISHelloWorld.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/unruledboy/archive/2009/12/25/NETZipDocumentProcessing.html</id><title type="text">.NET开源项目的前世和今生系列 之 .NET开源压缩文档处理的前世和今生</title><summary type="text">序这是《.NET开源项目的前世和今生系列》之一，如上一篇《.NET开源数据库的前世和今生》。这些系列是我对过去10年中了解的.NET开源项目的总结。《.NET开源项目的前世和今生系列》的大概结构如下(假如我还有心思写下去的话)：《.NET开源数据库的前世和今生》 上、下《.NET开源文档处理的前世和今生》：压缩、Office(Word/Excel/PPT/MAPI)、其它(PDF/RTF)《.NE...</summary><published>2009-12-25T06:56:00Z</published><updated>2009-12-25T06:56:00Z</updated><author><name>灵感之源</name><uri>http://www.cnblogs.com/unruledboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/unruledboy/archive/2009/12/25/NETZipDocumentProcessing.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/unruledboy/archive/2009/12/25/NETZipDocumentProcessing.html"/></entry></feed>
