<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_邀月工作室</title><subtitle type="text">年轻的时候，多走走，走不动的时候，静下来写回忆录。3w@live.cn</subtitle><id>http://feed.cnblogs.com/blog/u/22045/rss</id><updated>2012-05-30T05:35:46Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/22045/rss"/><entry><id>http://www.cnblogs.com/downmoon/archive/2012/05/16/2503856.html</id><title type="text">SSAS 2012实战示例一：创建多维数据集</title><summary type="text">本系列是以实例为主的一个学习笔记，注重实践性，以SQL Server Analysis Server 2012为主要平台。本例是第一个，需要使用下列组件、示例和工具:SQL Server 数据库引擎（SQL Server 2012自带）；Analysis Services（SQL Server 2012自带）；SQL Server Data Tools（SQL Server 2012自带）；HealthDW数据库（微软webcast提供，这里也提供一个下载）；Excel 2010</summary><published>2012-05-16T05:51:00Z</published><updated>2012-05-16T05:51:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/05/16/2503856.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/05/16/2503856.html"/><content type="html">&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;/p&gt;&lt;p&gt;本系列是以实例为主的一个学习笔记，注重实践性，以SQL Server Analysis Server 2012为主要平台。本例是第一个。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、先决条件&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;若要完成本教程，需要使用下列组件、示例和工具:&lt;/p&gt;&lt;p&gt;&amp;bull;SQL Server 数据库引擎（SQL Server 2012自带）&lt;/p&gt;&lt;p&gt;&amp;bull;Analysis Services（SQL Server 2012自带）&lt;/p&gt;&lt;p&gt;&amp;bull;SQL Server Data Tools（SQL Server 2012自带）&lt;/p&gt;&lt;p&gt;&amp;bull;HealthDW数据库（微软webcast提供，这里也提供一个&lt;a href="http://files.cnblogs.com/downmoon/HealthDW.zip" target="_blank"&gt;下载&lt;/a&gt;）&lt;/p&gt;&lt;p&gt;&amp;bull;Excel 2010&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、设定场景&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Health 公司是一家保健公司，积累了员工信息，产品信息，产品的单价和产品的销售 息产品信息产品的单价和产品的销售量。该公司希望建立多维数据集了解不同部门员工的销售业绩。 部门员工的销售业绩。例如，想要了解&lt;strong&gt;2008年网售部门销售八组石雷&lt;/strong&gt;的销售业绩。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、实现步骤&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1、新建并还原HealthDW数据库到本机实例中，略去。&lt;/p&gt;&lt;p&gt;2、打开SQL Server 2012自带的SSDT，新建一个Analysis Services Multidimensional and Data Mining Project,命名为SSASLearn01，然后建立数据源、数据源视图，这个略去。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1p5VEx6_nI-M39NRhzn0v6Sq3tlQgdTsT6WditjqApPPcIeL9ZlYUnQVSPx606K-RiraNbe5wcjlUcmQXxQePlKQ/2012-5-16%2012-41-46.png?psid=1" alt="邀月工作室" width="484" height="462" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;3、新建cube，并引用前面刚新建的数据源视图。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p5VEx6_nI-M058pnGgMaPCE9GJKXsiiNrC-ZE9Np95VUlLTXMio39Vk80fr8v6YgaFOPQaTMy_eGGx9q0WtrNDA/2012-5-16%2012-38-02.png?psid=1" alt="邀月工作室" width="492" height="531" /&gt;&lt;/p&gt;&lt;p&gt;4、新建三个维度，选择三个维度表，其他全部默认。完成后界面如图：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pmkUTrIbRo6l2YRJYQogdbCwDxALITGSZqA7vX0Ylf1MNF-2i2hxootz8ZxFIvZM75bInRCiw7ZQxcX1d6Q59LA/2012-5-16%2012-48-26.png?psid=1" alt="邀月工作室" width="815" height="392" /&gt;&lt;/p&gt;&lt;p&gt;5、我们首先创建日期维度，产品维度和员工维度与些相似。&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pmkUTrIbRo6mY3CDnLHc5ujTUekm1iHNf0Q6qDEiBQJnQDreJqXW2n28JNEm1YQwa8agNbw0ARfUJ3nT3H08tHQ/2012-5-16%2012-50-13.png?psid=1" alt="邀月工作室" width="790" height="504" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p3H22N7sveuqSNyrB5dt7rZNMHSk4ARvnb-KrJbuiI-iBHvsMezwC0MCqSndpBgGIXWm8lEEKDxqhwCMqyis1xg/2012-5-16%2012-53-56.png?psid=1" alt="邀月工作室" width="800" height="487" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;注意月维度必须包含年，因为独立的月毫无意义。&lt;/p&gt;&lt;p&gt;好了，此时，部署整个项目，第一次需要这样，后面只需要单独处理维度或cube即可完成部署。&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p3H22N7sveuoHu4KYuqhAjJc0OJegi9CeU2a-LzWdFZ-qgt-Gzuy1oQAhcwW12PqSWS9rfYTZtx2spnh1d-9pgA/2012-5-16%2012-59-06.png?psid=1" alt="邀月工作室" width="295" height="222" /&gt;&lt;/p&gt;&lt;p&gt;部署完成后，我们可以浏览下日期维度的浏览效果：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1p3H22N7sveuoJXHi-hDefhlD7JC9GnBQEQyfsj_5QR-Exc8TkW-3HZNfvp9LEXy4xhJkv2apvThxo397rcvRhBA/2012-5-16%2013-07-50.png?psid=1" alt="邀月工作室" width="517" height="359" /&gt;&lt;/p&gt;&lt;p&gt;注意上图中的月1有多个，但代表的是不同年份。这里有个小小的bug，就是月份排列按字符排列，不是按实际月份数字排列，修正一下即可&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1ptkECXoPi0k57J7tIyzIHbapoRN6eb7k7UW_1oqzUirziJj09lrJdpTGQEWv1_PWAlS5r0-0NjGXsVMTBsTFbFA/2012-5-16%2013-11-35.png?psid=1" alt="邀月工作室" width="330" height="115" /&gt;&lt;/p&gt;&lt;p&gt;此时对该维度，Process,并Reconnection,得到如下效果：&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1ptkECXoPi0k7hIA0pLCYUzQZayML6w8weBsPLfHjgPRc5UTdarZ3p5t2WDC5mRHUxdRc8uSbIZvo8OexsxTyJgw/2012-5-16%2013-13-04.png?psid=1" alt="邀月工作室" width="517" height="303" /&gt;&lt;/p&gt;&lt;p&gt;排序妥了，我们希望的得到一个日期的层次结构钻取，再做如下修改即可。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pOGHlB3nrn2oggQiNqio2yUS3cN-n31_QQNlqW0irsOXl4jYrXOaCcSI5Mu8Y58YvOOEbq5pf59PJ-ISuqywSoQ/2012-5-16%2013-15-34.png?psid=1" alt="邀月工作室" width="482" height="326" /&gt;&lt;/p&gt;&lt;p&gt;对Cube，Process,并Reconnection,得到如下效果：&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p7XPUr9rn1nqratMMqkhT0y2uhy03_RoyauNml6Kni93_QH1tiWM0SL2DdOogvgK5O2_CiOnTCC3wEOxqEe1xkg/2012-5-16%2013-19-50.png?psid=1" alt="邀月工作室" width="672" height="515" /&gt;&lt;/p&gt;&lt;p&gt;注意，SQL Server 2012自带的SSDT已经废除了在该开发界面中对多维数据集的浏览，我们只能转到Excel界面完成&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1piVkEDcjLb0sP0es2x0R--digAC5VxCQlA98IraKF3NwHqkbO4Ksql2-PMq9VysDfHOTLAOINQrHq_mILjOeAOg/2012-5-16%2013-29-10.png?psid=1" alt="邀月工作室" width="743" height="418" /&gt;&lt;/p&gt;&lt;p&gt;6、我们继续完成产品维度和员工维度的设计。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1piVkEDcjLb0uvLVfBGZOCbzsyuwaKXkwQb5s_Of0VTB5V-a5SPrVhE99wCqYuDVtVxrP3BNTGpSHLVtDi0nBO4g/2012-5-16%2013-31-43.png?psid=1" alt="邀月工作室" width="483" height="276" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pLT_6C-PC9mjNHIpVrg64iP4VRG966Siwi2C_B0gi0EU8ZXOZhwkrl-awUyZyVkNUdk0GcJQindtl7g2uMgr6gg/2012-5-16%2013-32-54.png?psid=1" alt="邀月工作室" width="490" height="310" /&gt;&lt;/p&gt;&lt;p&gt;对整个项目进行Process,并在cube中Reconnection,转到Excel界面中，最终得到如下结果：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pKyS--nFVQB9bKzBvnHHfiM0fqoATNDdrKQux18ola9PsjybtLtLle7Iqt8TPh9xrs7BX95JGwPmo3XFjd_jnRA/2012-5-16%2013-38-47.png?psid=1" alt="邀月工作室" width="339" height="323" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p5VEx6_nI-M0nJO5BTrFu4i1bn-HObRAV2VsDBwUnFcyJ_19qaBFl8Yls7KvI_wCB_NFAgI37o1edbtDtnkw6cA/2012-5-16%2012-31-55.png?psid=1" alt="邀月工作室" width="467" height="220" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2503856.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/05/16/2503856.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/05/15/2502202.html</id><title type="text">SQL Server 2012中自带的SSDS已经废除了多维数据集的浏览功能</title><summary type="text">在SQL Server 2012自带的SQL Server Data Tools（SSDT）,上个版本中SQL Server 2008中对应为BIDS，已经废除了多维数据集的数据浏览功能，同时在SSMS中也同步废除，只能浏览单维数据。</summary><published>2012-05-15T12:43:00Z</published><updated>2012-05-15T12:43:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/05/15/2502202.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/05/15/2502202.html"/><content type="html">&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;/p&gt;&lt;p&gt;在SQL Server 2012自带的SQL Server Data Tools（SSDT）,上个版本中SQL Server 2008中对应为BIDS，已经废除了多维数据集的数据浏览功能，同时在SSMS中也同步废除，只能浏览单维数据。&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pLS079rDM46WnxWXUja1Zaif0eCbP3xTEeFZPDLDoBx_RpY0gaRJlZdctR9lmyCd9TKmvzXbIYJ3c_0IlSml-Ew/2012-5-15%2020-08-50%201.png?psid=1" alt="邀月工作室" width="735" height="431" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;解决方法：在维度浏览界面,点击&amp;ldquo;Analyze in Excel&amp;rdquo;，在相应的Excel界面完成浏览。&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pLS079rDM46V3woWIAKvzVik67dwLsOHl2M7mGplF-m5_cYudtCl-j0lwM33N9k5cXQHccdGFsFO7c6IehBlOfA/2012-5-15%2020-26-52%201.png?psid=1" alt="邀月工作室" width="428" height="77" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pH6Luf6f5NI8ghD21VN099hMMt2dxabzH0YFAotrSNybNy8z85s4NW0HRibpryS3c65JrcdcrkOcUY2ZctzFSCg/2012-5-15%2020-39-21.png?psid=1" alt="邀月工作室" width="564" height="483" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;关于&amp;ldquo;Management Studio 和多维数据集设计器中的多维数据集浏览器已被删除&amp;rdquo;的详细，请看MSDN:&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ms143682.aspx" target="_blank"&gt;http://msdn.microsoft.com/zh-cn/library/ms143682.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2502202.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/05/15/2502202.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/05/10/2493815.html</id><title type="text">SQL Server BI的几个经典案例:Project Real等</title><summary type="text">从微软公司己经发布的最大案例研究开始是一个很好的选择。这里推荐几个经典的BI案例。一、被称为“Project Real”的案例，以Barnes和Noble书店为基础，使用完整SQL Server 2005 Bl具体实现。Microsoft目前正在记录公共案例研究文档中有关升级到SQL server 2008 BI的情况。这个案例研究是一个典型的零售业BI研究，里面包含标准的零售业度量，如库存管理和周转率，还有标准的利润和亏损度量。这个案例还包含常用的零售业日历，如标准日历、财年日历以及4一5一4日历。</summary><published>2012-05-10T03:46:00Z</published><updated>2012-05-10T03:46:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/05/10/2493815.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/05/10/2493815.html"/><content type="html">&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;/p&gt;&lt;p&gt;从微软公司己经发布的最大案例研究开始是一个很好的选择。这里推荐几个经典的BI案例。&lt;/p&gt;&lt;p&gt;一、被称为&amp;ldquo;&lt;strong&gt;Project Real&lt;/strong&gt;&amp;rdquo;的案例，以Barnes和Noble书店为基础，使用完整SQL Server 2005 Bl具体实现。Microsoft目前正在记录公共案例研究文档中有关升级到SQL server 2008 BI的情况。这个案例研究是一个典型的零售业BI研究，里面包含标准的零售业度量，如库存管理和周转率，还有标准的利润和亏损度量。这个案例还包含常用的零售业日历，如标准日历、财年日历以及4一5一4日历。&lt;/p&gt;&lt;p&gt;关于这个案例研究的更多信息，请访问&lt;a href="http://technet.microsoft.com/en-us/library/Cc966416" target="_blank"&gt;http://technet.microsoft.com/en-us/library/Cc966416&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;二、另外一个值得研究的案例是一个描述在Microsoft内部利用SQLserver 2008BI功能的案例（&lt;strong&gt;&lt;span class="caseStudySubTitle"&gt;Microsoft Deploying 10-Terabyte Enterprise Data Warehouse using SQL Server 2008&lt;/span&gt;&lt;/strong&gt;），该案例除了研究为非常巨大的数据仓库（估计在实施的第一年数据量会超过10TB）提供了概念模型的验证外，它还显示了SQLServer2008的新功能（如备份压缩、变动数据捕获等）对于这样巨大规模的BI方案的高效实现有多重要。&lt;/p&gt;&lt;p&gt;关于该案例，请看：&lt;a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000001180" target="_blank"&gt;http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000001180&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;三、一个来自以色列的名称为&amp;ldquo;&amp;nbsp;&lt;strong&gt;Clalit Health Care HMO&lt;/strong&gt;&amp;rdquo;的卫生待业BI解决议案&lt;/p&gt;&lt;p&gt;关于该案例，请看：&lt;a&gt;http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000002453&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;四、数据分析的推荐网站：&lt;a href="http://itongji.cn/" target="_blank"&gt;http://itongji.cn/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;数据挖掘的推荐网站：&lt;a href="http://www.chinakdd.com" target="_blank"&gt;http://www.chinakdd.com&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;a href="http://www.sqlserverdatamining.com/" target="_blank"&gt;http://www.sqlserverdatamining.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;其他最近看过的几篇文章：&lt;/p&gt;&lt;p&gt;1、Storage Top 10 Best Practices（十大最佳存储实践）&lt;/p&gt;&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-US/library/cc966534" target="_blank"&gt;http://technet.microsoft.com/en-US/library/cc966534&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://sqlcat.com/sqlcat_international/b/whitepapers_chinese-simplified/archive/2008/10/17/443.aspx" target="_blank"&gt;http://sqlcat.com/sqlcat_international/b/whitepapers_chinese-simplified/archive/2008/10/17/443.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2、&lt;span class="label"&gt;视频:&lt;/span&gt; &lt;span id="subtitle"&gt;SQL server2012 商业智能就在你我身边&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;http://v.youku.com/v_show/id_XMzY1NTc1MjIw.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2493815.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/05/10/2493815.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/05/09/2492645.html</id><title type="text">一款优秀的BIDS辅助工具-BIDS Helper</title><summary type="text">今天注意到一款优秀的BIDS辅助工具，地址：http://bidshelper.codeplex.com/，它可以适用于SQL Server 2005/2008/2008R2版本对应的BI Development Studio (BIDS)，也可适用于SQL Server 2012自带的SQL Server Data Tools (SSDT)。</summary><published>2012-05-09T13:08:00Z</published><updated>2012-05-09T13:08:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/05/09/2492645.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/05/09/2492645.html"/><content type="html">&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天注意到一款优秀的BIDS辅助工具，地址：&lt;a&gt;http://bidshelper.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;它可以适用于SQL Server 2005/2008/2008R2版本对应的BI Development Studio (BIDS)，也可适用于SQL Server 2012自带的SQL Server Data Tools (SSDT)。主要功能如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://i3.codeplex.com/Download?ProjectName=bidshelper&amp;amp;DownloadId=21644" alt="邀月工作室" width="875" height="667" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;详细功能点列表：&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pfswdJoseL8xRct2By8ZoL233-cCzd52k4gD16FSi9Xzj3wtOGd0RJVzIWNk8XobG58hdj83pCTAN5WpsNjPH7w/2012-5-9%2020-51-28.png?psid=1" alt="邀月工作室" width="457" height="1392" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2492645.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/05/09/2492645.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/05/04/2482995.html</id><title type="text">SQL Server带列名导出到Excel(Export to CSV with headers)的几个思路</title><summary type="text">前几天在项目中遇到一个问题，需要从SQL Server导出表到Excel，但需要带列名。晚上尝试了几种方法，并作个小结。</summary><published>2012-05-04T09:00:00Z</published><updated>2012-05-04T09:00:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/05/04/2482995.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/05/04/2482995.html"/><content type="html">&lt;p&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;前几天在项目中遇到一个问题，需要从SQL Server导出表到Excel，但需要带列名。晚上尝试了几种方法，并作个小结。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;假定表如下：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;USE&lt;/span&gt;&lt;span style="color: #000000;"&gt; testDb2&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #808080;"&gt;NOT&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;OBJECT_ID&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Demo_A&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;span style="color: #0000ff;"&gt;IS&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NULL&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;DROP&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Demo_A&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;***** Object: Table [dbo].[Demo_A] downmoon:3w@live.cn *****&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Demo_A&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; &lt;span style="color: #808080;"&gt;not&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Nvarchar&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;) &lt;span style="color: #808080;"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NULL&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;INSERT&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;dbo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;.&lt;span style="color: #ff0000;"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Demo_A&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;郭靖&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;union&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;胡一刀&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;union&lt;/span&gt; &lt;span style="color: #808080;"&gt;ALL&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;令狐冲&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-family: 宋体;"&gt;如果通常的思路，我们可以用BCP，命令如下：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To allow advanced options to be changed.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;show advanced options&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To update the currently configured value for advanced options.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RECONFIGURE&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To enable the feature.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xp_cmdshell&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To update the currently configured value for this feature.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RECONFIGURE&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; master..xp_cmdshell &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;bcp Testdb2.dbo.Demo_A out c:\Temp.xls -c -q -S"ap4\Net2012" -U"sa" -P"sA"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-family: 宋体;"&gt;这样得到的xls文件中，Sheet是不带列名的。但可以改进一下，得到如下命令(参考：&lt;/span&gt;&lt;a title="http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/812b8eec-5b77-42a2-bd23-965558ece5b9/" href="http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/812b8eec-5b77-42a2-bd23-965558ece5b9/" target="_blank"&gt;&lt;span style="font-family: 宋体;"&gt;http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/812b8eec-5b77-42a2-bd23-965558ece5b9/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: 宋体;"&gt;)：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;方法一：使用BCP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;为了方便，我创建了一个存储过程：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;***** SQL Export to xls **************&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt; Example &lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;CPP_Export_To_Excel_With_Header 'Testdb2','Demo_A','C:\TestExxelWithHeader.xls'&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2012.5.4 BY tony,邀月, 3w@live.cn &lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;-- CPP_Export_To_Excel_With_Header 'Testdb2','Demo_A','C:\TestExcelWithHeader.xls'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;Create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt; CPP_Export_To_Excel_With_Header&lt;br/&gt;(&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;@db_name&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;@table_name&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;@file_path&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--Generate column names as a recordset&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@columns&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;), &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@HeadersOnlyFile&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;),&lt;span style="color: #008000;"&gt;@TableDataWithoutHeaders&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@HeadersOnlyFile&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;cast&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;() &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;40&lt;/span&gt;)),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;-&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;1.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@TableDataWithoutHeaders&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;cast&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;() &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;VARCHAR&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;40&lt;/span&gt;)),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;-&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;2.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;coalesce&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;column_name&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; as &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;column_name&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;information_schema.columns&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;table_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@table_name&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''''&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; as &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'''''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; as &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''''&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--Generate column names file&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;bcp " select * from (select &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;) as t" queryout "&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@HeadersOnlyFile&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;" -c&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;--Create a dummy file to have actual data&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;bcp "&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@db_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;.dbo.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@table_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;" out "&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@TableDataWithoutHeaders&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;" -c -t -T&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Merge File into One Final Format&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;copy /b &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@HeadersOnlyFile&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@TableDataWithoutHeaders&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@file_path&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Delete temp File&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;del &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@HeadersOnlyFile&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;del &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@TableDataWithoutHeaders&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;)&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;调用方法：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;CPP_Export_To_Excel_With_Header &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Testdb2&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Demo_A&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;C:\TestExcelWithHeader.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;span style="font-family: 宋体;"&gt;另外有类似的处理方法：(看这里：&lt;/span&gt;&lt;a title="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926" href="http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926" target="_blank"&gt;&lt;span style="font-family: 宋体;"&gt;http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=49926&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: 宋体;"&gt;),其主要思路如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;方法二：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;procedure&lt;/span&gt;&lt;span style="color: #000000;"&gt; proc_generate_excel_with_columns&lt;br/&gt;(&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@db_name&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@table_name&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;),    &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@file_name&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Generate column names as a recordset&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@columns&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;), &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;), &lt;span style="color: #008000;"&gt;@data_file&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;br/&gt;    &lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;coalesce&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;column_name&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; as &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;column_name &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    information_schema.columns&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;    table_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@table_name&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''''&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; as &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'''''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; as &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;),&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''''&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Create a dummy file to have actual data&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@data_file&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;substring&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@file_name&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;len&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@file_name&lt;/span&gt;)&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;charindex&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;\&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff00ff;"&gt;reverse&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@file_name&lt;/span&gt;)))&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;\data_file.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Generate column names in the passed EXCEL file&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;bcp " select * from (select &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@columns&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;) as t" queryout "&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@file_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;" -c&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Generate data in the dummy file&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;bcp "select * from &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@db_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;..&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@table_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;" queryout "&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@data_file&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;" -c&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Copy dummy file to passed EXCEL file&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@data_file&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; &amp;gt;&amp;gt; "&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@file_name&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;Delete dummy file &lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;exec master..xp_cmdshell &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;del &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@data_file&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;)&lt;/div&gt;&lt;p&gt;调用示例：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; proc_generate_excel_with_columns &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;your dbname&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;your table name&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;your file path&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果，你的环境是SQL Server 2005,那么可以有：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;方法三，使用sp_makewebtask,仅适用于SQL Server 2005&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)表T1结构&lt;br/&gt;a    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;b    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;x    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)开启Web Assistant Procedures&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;show advanced options&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RECONFIGURE&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Web Assistant Procedures&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RECONFIGURE&lt;/span&gt; &lt;br/&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;)执行如下语句&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt;&lt;span style="color: #000000;"&gt; sp_makewebtask &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@outputfile&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;d:\testing.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@query&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Select TOP 10 * from shenliang1985..T1&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@colheaders&lt;/span&gt; &lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;@FixedFont&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@lastupdated&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@resultstitle&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Querying details&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;)查看生成的EXCEl的&lt;br/&gt;&lt;br/&gt;Querying details                                       &lt;br/&gt;&lt;br/&gt;Last updated: &lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2010&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;03&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;03&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;01&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;02&lt;/span&gt;:&lt;span style="color: #800000; font-weight: bold;"&gt;59.263&lt;/span&gt;&lt;span style="color: #000000;"&gt;                            &lt;br/&gt;&lt;br/&gt;a    b    x                    &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;15&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;3&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;8&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;20&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;10&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;25&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;5&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;12&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;30&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;6&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;14&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;35&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;7&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;16&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;40&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;8&lt;/span&gt;                    &lt;br/&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;18&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;45&lt;/span&gt;    &lt;span style="color: #800000; font-weight: bold;"&gt;9&lt;/span&gt;    &lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;可惜SQL Server 2008以后sp_makewebtask 这个存储过程取消了，后续版本也不再启用。&lt;br /&gt;方法一和方法二其实生成的文件都不上真正的Excel文件，虽然后缀名为xls，为此，找到&lt;span style="color: #ff0000;"&gt;邹建&lt;/span&gt;写的一个存储过程。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方法四,使用OpenRowSet：&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;--数据导出EXCEL&lt;br/&gt;&lt;br/&gt;导出查询中的数据到Excel,包含字段名,文件为真正的Excel文件&lt;br/&gt;如果文件不存在,将自动创建文件&lt;br/&gt;如果表不存在,将自动创建表&lt;br/&gt;基于通用性考虑,仅支持导出标准数据类型&lt;br/&gt;&lt;br/&gt;--邹建 2003.10(引用请保留此信息)--&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;/*&lt;/span&gt;&lt;span style="color: #008080;"&gt;--调用示例&lt;br/&gt;&lt;br/&gt;p_exporttb @sqlstr='select * from 地区资料'&lt;br/&gt;,@path='c:\',@fname='aa.xls',@sheetname='地区资料'&lt;br/&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;proc&lt;/span&gt;&lt;span style="color: #000000;"&gt; p_exporttb&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sqlstr&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;),&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;查询语句,如果查询语句中使用了order by ,请加上top 100 percent&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008000;"&gt;@path&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;),&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;文件存放目录&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;250&lt;/span&gt;),&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;文件名&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008000;"&gt;@sheetname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;250&lt;/span&gt;)&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;要创建的工作表名,默认为文件名&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@src&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;),&lt;span style="color: #008000;"&gt;@desc&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt;),&lt;span style="color: #008000;"&gt;@out&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@obj&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@constr&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;1000&lt;/span&gt;),&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;),&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;参数检测&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;isnull&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;)&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;temp2012.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;isnull&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sheetname&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;)&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sheetname&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;replace&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;#&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;检查文件是否已经存在&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #808080;"&gt;right&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@path&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;)&lt;span style="color: #808080;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;\&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@path&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@path&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;\&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;table&lt;/span&gt; #tb(a &lt;span style="color: #0000ff;"&gt;bit&lt;/span&gt;,b &lt;span style="color: #0000ff;"&gt;bit&lt;/span&gt;,c &lt;span style="color: #0000ff;"&gt;bit&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@path&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; #tb &lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; master..xp_fileexist &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;数据库创建语句&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@path&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #808080;"&gt;exists&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; #tb &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; a&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@constr&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;DRIVER={Microsoft Excel Driver (*.xls)};DSN=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;;READONLY=FALSE&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;;CREATE_DB="&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;";DBQ=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@constr&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="Excel 8.0;HDR=YES&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;;DATABASE=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;连接数据库&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;sp_oacreate &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;adodb.connection&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@obj&lt;/span&gt;&lt;span style="color: #000000;"&gt; out&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; lberr&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;sp_oamethod &lt;span style="color: #008000;"&gt;@obj&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;open&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@constr&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; lberr&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;创建表的SQL&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;declare&lt;/span&gt; &lt;span style="color: #008000;"&gt;@tbname&lt;/span&gt;&lt;span style="color: #000000;"&gt; sysname&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@tbname&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;##tmp_&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;convert&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;38&lt;/span&gt;),&lt;span style="color: #ff00ff;"&gt;newid&lt;/span&gt;&lt;span style="color: #000000;"&gt;())&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;select * into [&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@tbname&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;] from(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sqlstr&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;) a&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;a.name&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;,&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;a.name&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;] &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;case&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; b.name &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%char&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;case&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; a.length&lt;span style="color: #808080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;255&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;memo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;text(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;cast&lt;/span&gt;(a.length &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;)&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; b.name &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%int&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #808080;"&gt;or&lt;/span&gt; b.name&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;bit&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;int&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; b.name &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%datetime&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;datetime&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; b.name &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%money&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;money&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;when&lt;/span&gt; b.name &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%text&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;then&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;memo&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; b.name &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; tempdb..syscolumns a &lt;span style="color: #808080;"&gt;left&lt;/span&gt; &lt;span style="color: #808080;"&gt;join&lt;/span&gt; tempdb..systypes b &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt; a.xtype&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;b.xusertype&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; b.name &lt;span style="color: #808080;"&gt;not&lt;/span&gt; &lt;span style="color: #808080;"&gt;in&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;image&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;uniqueidentifier&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;sql_variant&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;varbinary&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;binary&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;timestamp&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;and&lt;/span&gt; a.id&lt;span style="color: #808080;"&gt;=&lt;/span&gt;(&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; id &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; tempdb..sysobjects &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; name&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@tbname&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold;"&gt;@@rowcount&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;create table [&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sheetname&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;](&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;substring&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;)&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;)&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;,&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;substring&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;8000&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;sp_oamethod &lt;span style="color: #008000;"&gt;@obj&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;execute&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@out&lt;/span&gt; out,&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt; lberr&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; &lt;span style="color: #008000;"&gt;@err&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;sp_oadestroy &lt;span style="color: #008000;"&gt;@obj&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;导入数据&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;openrowset(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;MICROSOFT.JET.OLEDB.4.0&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Excel 8.0;HDR=YES&lt;br/&gt;;DATABASE=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@path&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'''&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;,[&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sheetname&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;$])&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;insert into &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;) select &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; from [&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@tbname&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;drop table [&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #008000;"&gt;@tbname&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;]&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;br/&gt;lberr:&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;exec&lt;/span&gt; sp_oageterrorinfo &lt;span style="color: #800000; font-weight: bold;"&gt;0&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@src&lt;/span&gt; out,&lt;span style="color: #008000;"&gt;@desc&lt;/span&gt;&lt;span style="color: #000000;"&gt; out&lt;br/&gt;lbexit:&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;cast&lt;/span&gt;(&lt;span style="color: #008000;"&gt;@err&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;varbinary&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;)) &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; 错误号&lt;br/&gt;,&lt;/span&gt;&lt;span style="color: #008000;"&gt;@src&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; 错误源,&lt;span style="color: #008000;"&gt;@desc&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; 错误描述&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #008000;"&gt;@sql&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@constr&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@fdlist&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;go&lt;/span&gt;&lt;/div&gt;&lt;p&gt;为了执行这个存储过程，你得先打开以下开关：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To allow advanced options to be changed.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;show advanced options&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To allow advanced options to be changed.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Ole Automation Procedures&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;EXEC&lt;/span&gt; sp_configure &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Ad Hoc Distributed Queries&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt; To update the currently configured value for advanced options.&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;RECONFIGURE&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GO&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;调用示例：&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;p_exporttb &lt;span style="color: #008000;"&gt;@sqlstr&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;select * from [Demo_A]&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;,&lt;/span&gt;&lt;span style="color: #008000;"&gt;@path&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;c:\&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@fname&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;Export2xls_ByProc.xls&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #008000;"&gt;@sheetname&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;员工名称&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;/div&gt;&lt;p&gt;结果确实是正宗的xls文件。&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果你是兼写程序的DBA，那么NPOI是你理想的选择，因为它是纯原生的不依赖于Office组件的开源第三方组件，它提供了一个&amp;ldquo;&lt;strong&gt;CreateExportDataTableSheetAndHeaderRow&lt;/strong&gt;&amp;rdquo;方法可以让你方便的生成纯正的Excel，遗憾的是，目前好像只支持到Excel 2003。示例请看这儿（&lt;/span&gt;&lt;a title="http://scottonwriting.net/sowblog/archive/2011/06/08/export-an-ado-net-datatable-to-excel-using-npoi.aspx" href="http://scottonwriting.net/sowblog/archive/2011/06/08/export-an-ado-net-datatable-to-excel-using-npoi.aspx" target="_blank"&gt;&lt;span style="font-family: 宋体;"&gt;http://scottonwriting.net/sowblog/archive/2011/06/08/export-an-ado-net-datatable-to-excel-using-npoi.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: 宋体;"&gt;）,该组件的源码：&lt;/span&gt;&lt;a title="http://npoi.codeplex.com/" href="http://npoi.codeplex.com/" target="_blank"&gt;&lt;span style="font-family: 宋体;"&gt;http://npoi.codeplex.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;方法五：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; Sheet CreateExportDataTableSheetAndHeaderRow(DataTable exportData, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheetName, CellStyle headerRowStyle)&lt;br/&gt;{&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; sheet = &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Workbook.CreateSheet(EscapeSheetName(sheetName));&lt;br/&gt;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Create the header row&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; row = sheet.CreateRow(&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; colIndex = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; colIndex &amp;lt; exportData.Columns.Count; colIndex++&lt;span style="color: #000000;"&gt;)&lt;br/&gt;    {&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; cell =&lt;span style="color: #000000;"&gt; row.CreateCell(colIndex);&lt;br/&gt;        cell.SetCellValue(exportData.Columns[colIndex].ColumnName);&lt;br/&gt;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (headerRowStyle != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br/&gt;            cell.CellStyle &lt;/span&gt;=&lt;span style="color: #000000;"&gt; headerRowStyle;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; sheet;&lt;br/&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;当然，如果你觉得以上方法门槛有点高，那么SSIS可能是你的首选，它的优势在于简单直观，并且可以导出为Excel2007格式。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;只要在导出时选择第一行包含列名，即可。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;方法六，使用SSIS&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pdTOOhkpRALn4GY80qRB-yZ-jPCH9mnevMuXco9bSJQnbqykXsdDp73gLWzYjWoBrWm7YTeLfMr7nhbILB9Fi9g/2012-5-4%2012-24-02.png?psid=1" alt="邀月工作室" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;因为有人觉得界面过于繁琐，于是仿照导出向导的思路写了一个批处理，你可以修改为自己适合的内容：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;方法七&lt;/strong&gt;：(&lt;/span&gt;&lt;a title="http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/812b8eec-5b77-42a2-bd23-965558ece5b9/" href="http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/812b8eec-5b77-42a2-bd23-965558ece5b9/" target="_blank"&gt;&lt;span style="font-family: 宋体;"&gt;http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/812b8eec-5b77-42a2-bd23-965558ece5b9/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: 宋体;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;@ECHO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;OFF&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008000;"&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; -------------------------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; Generic script for exporting data to file from SQL Server using a SQL query.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; The resulting file will be tab separated with newline as the row delimiter.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; A log file is generated and kept in case of an error or when in debug mode.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; See command syntax for details.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; History:&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; 20120327 Lars R&amp;ouml;nnb&amp;auml;ck CREATED&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; -------------------------------------------------------------------------------&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000;"&gt;:constants&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; myCodePage=&lt;span style="color: #000000;"&gt;ACP&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;:variables&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; theQuery=%~1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; theFile=%~2&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; theServer=%~3&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; theDebug=%~4&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; /a aRandomNumber=%random%%&lt;span style="color: #800080;"&gt;%1000&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;FOR&lt;/span&gt; /F "usebackq tokens=1-7* delims=.:/,- " %%a IN (`&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; %&lt;span style="color: #0000ff;"&gt;DATE&lt;/span&gt;%_%&lt;span style="color: #0000ff;"&gt;TIME&lt;/span&gt;%`) &lt;span style="color: #0000ff;"&gt;DO&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; myStartTime=%%a%%b%%c%%d%%e%%f%%g)&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; myColumnQuery="select top 0 * into [#columns_%myStartTime%_%aRandomNumber%] from (%theQuery%) q; select stuff((select char(9) + c.name from tempdb.sys.columns c where c.object_id = t.object_id order by c.column_id for XML path(''), type).value('.', 'varchar(max)'), 1,1,'') AS Header from tempdb.sys.tables t where t.name like '#columns_%myStartTime%_%aRandomNumber%%%'"&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; myHeaderFile=%theFile%.%aRandomNumber%.&lt;span style="color: #000000;"&gt;header&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; myDataFile=%theFile%.%aRandomNumber%.&lt;span style="color: #000000;"&gt;data&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; myLogFile=%theFile%.%myStartTime%_%aRandomNumber%.&lt;span style="color: #000000;"&gt;log&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;:checks&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; "%theQuery%"=="" (&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; syntax&lt;br/&gt;&lt;/span&gt;)&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; "%theFile%"=="" (&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; syntax&lt;br/&gt;&lt;/span&gt;)&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; "%theServer%"=="" (&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt; theServer=&lt;span style="color: #000000;"&gt;%COMPUTERNAME%&lt;br/&gt;&lt;/span&gt;)&lt;br/&gt;&lt;span style="color: #800000;"&gt;:information&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Start&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;Time&lt;/span&gt;: %myStartTime% &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; Random Number: %aRandomNumber% &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; File: %theFile% &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; Server Name: %theServer% &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; Query: &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;. &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; %theQuery% &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #800000;"&gt;:export&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;BCP %myColumnQuery% queryout &lt;/span&gt;"%myHeaderFile%" -T -S "%theServer%" -a 65535 -c -C %myCodePage% -q &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ERRORLEVEL&lt;/span&gt; 1 &lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; error&lt;br/&gt;BCP &lt;/span&gt;"%theQuery%" queryout "%myDataFile%" -T -S "%theServer%" -a 65535 -c -C %myCodePage% -q &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ERRORLEVEL&lt;/span&gt; 1 &lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; error&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;. &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; Merging &lt;span style="color: #0000ff;"&gt;files&lt;/span&gt;... &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;. &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;COPY&lt;/span&gt; /A "%myHeaderFile%" + "%myDataFile%" "%theFile%" /B /Y &amp;gt;&amp;gt; "%myLogFile%" 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ERRORLEVEL&lt;/span&gt; 1 &lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; error&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;:cleanup&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;DEL&lt;/span&gt; "%myHeaderFile%" &amp;gt;NUL 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ERRORLEVEL&lt;/span&gt; 1 &lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; error&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DEL&lt;/span&gt; "%myDataFile%" &amp;gt;NUL 2&amp;gt;&amp;amp;1&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ERRORLEVEL&lt;/span&gt; 1 &lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; error&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; /I &lt;span style="color: #0000ff;"&gt;NOT&lt;/span&gt; [%theDebug%]==[Y] (&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;DEL&lt;/span&gt; "%myLogFile%"&lt;br/&gt;)&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ERRORLEVEL&lt;/span&gt; 1 &lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; error&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;GOTO&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;end&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #800000;"&gt;:error&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; ERROR: An export error has occured!&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;IF&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;NOT&lt;/span&gt; [%myLogFile: =%]==[] (&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; Details can be found in:&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; %myLogFile%&lt;br/&gt;&lt;/span&gt;)&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;EXIT&lt;/span&gt; /B 1&lt;br/&gt;&lt;span style="color: #800000;"&gt;:syntax&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;.&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; SYNTAX: &lt;span style="color: #800080;"&gt;%0&lt;/span&gt; "sql query" "output file"&lt;span style="color: #000000;"&gt; [server] [Y]&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; -------------------------------------------------------------------------------&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; You must specify an SQL query and an output file name in which the results of&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; the query will be stored.&lt;span style="color: #000000;"&gt; Specifying a server is optional and defaults to the&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; server you are executing &lt;span style="color: #0000ff;"&gt;on&lt;/span&gt;. &lt;span style="color: #0000ff;"&gt;If&lt;/span&gt;&lt;span style="color: #000000;"&gt; a fourth argument is given as Y a log file of&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt; the &lt;span style="color: #0000ff;"&gt;command&lt;/span&gt; outputs will be saved in the same folder as the output file.&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;ECHO&lt;/span&gt;&lt;span style="color: #000000;"&gt; -------------------------------------------------------------------------------&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;:end&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008000;"&gt;REM&lt;/span&gt;&lt;span style="color: #008000;"&gt; This is the end.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;span style="font-family: 宋体;"&gt;小结：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;1、导出带有列名的Excel，可以用BCP，语句最少，但导出的不是真正的Excel文件；&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;2、使用OpenRowset，可以导出真正的Excel;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;3、使用NPOI，可以最大化地满足编程人员的需求，另外也可在导出时再做适当的逻辑处理，另外也不需要xp_cmdshell等额外的权限；&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;4、最简单的是使用SSIS的导出向导，界面直观，可以直接导出为Excel 2003/2007格式。&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2482995.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/05/04/2482995.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/05/03/2481190.html</id><title type="text">《Expert Cube Development with Microsoft SQL Server 2008 Analysis Services》读书笔记第九章：保护Cube（二）</title><summary type="text">在上文中，我们简单回顾了Analysis Services（以下简称AS，邀月注）的角色和windows用户组等有关管理安全的基础知识，本文将继续关注数据安全(Data Security)。</summary><published>2012-05-03T11:14:00Z</published><updated>2012-05-03T11:14:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/05/03/2481190.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/05/03/2481190.html"/><content type="html">&lt;p&gt;&amp;nbsp;&lt;span style="font-family: 宋体;"&gt;&lt;a id="homepage1_HomePageDays_ctl04_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;在上文中，我们简单回顾了Analysis Services（&lt;strong&gt;以下简称AS，邀月注&lt;/strong&gt;）的角色和windows用户组等有关管理安全的基础知识，本文将继续关注数据安全(Data Security)。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;二、Analysis Services安全功能（续一）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;5、数据安全(Data Security)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;可以实现三种不同类型的数据安全性：我们可以授予角色以访问整个cube的成员的权限;我们可以授予对一个Cube数据的访问，可以拒绝访问单个Cell（Cell安全），或者维度结构层次上的个别成员（Dimension安全）。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（1）对Cube授予读权限&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;用户访问一个Cube中的任何数据之前，他们必须是一个对该Cube具有读取权限的角色成员。通过如下界面授予读权限。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pRMK60eTKt_XGpjCT8EX16qeMENxbVahnOXeF1IAqPKL74cQL3aMCMfFiySEn-Xyb6qplKF4kndt6EOsIpiwerg/2012-5-3%2010-00-40.png?psid=1" alt="邀月工作室" width="689" height="380" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果设置了Cube上的写回（WriteBack），我们还可以控制角色是否可以写回Cube的授予读/写权限。最后，如果我们想要角色成员，能够运行钻取查询和创建本地Cube，我们可以授予权限&amp;ldquo;Local Cube/Drillthrough Access&amp;rdquo;。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pxuRwVMDP1FpZShWZsIv8xao937ZtSVk0d8eNiQNh33_4EuLWWDwfLdEKuCgcJlq_gGaDPvVNY-ekJzR7EyZUnA/2012-5-3%2010-05-59.png?psid=1" alt="邀月工作室" width="689" height="380" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（2）Cell安全&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;Cell的安全性配置使用三个MDX表达式返回布尔值。这三个表达式，让我们定义哪些Cube的Cell可以被读或写回。Cube中的每一个Cell被评估，如果返回true，那么我们可以读取或写入cell，如果返回false，则不。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我们看一个例子，如果，我们在Role编辑界面，检查Cell数据选项卡是否启用&amp;ldquo;read&amp;rdquo;权限，输入如下表达式：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;[Sales Territory].[Sales Territory Country].CurrentMember IS [Sales Territory].[Sales Territory Country].&amp;amp;[Canada]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1p22qnEJh7miqylyQjHOXFj5o8o6sF-o5qo-aRklnBaM2YM-ME1iPyqQIEgXmwiS4jEHtl_4ycdDLcQZeEcvgeZA/2012-5-3%2010-16-41.png?psid=1" alt="邀月工作室" width="683" height="375" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这样，用户将只能看到Sales Territory维度中Sales Territory Country层次的当前成员是Canada的Cell。在该角色下，我们查询Cube，如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pRMK60eTKt_UpxJaVrjJVdxJ4jIup4NXqSrYRtN4KLpGqk64wXXsHpnPfVpS-lDrl_s0sZWhLGZNU_K3gN_yO8A/2012-5-3%2012-47-56.png?psid=1" alt="邀月工作室" width="689" height="376" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这个结果表明：&lt;br /&gt;A:即便角色只能访问加拿大的数据，但还是看到了其他国家，只是不能访问的数据用Null代替，当然也可以用#N/A。这可以在"Secured Cell Value"中设置。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;B:授予访问一个国家也授予访问该该国的所有地区。这是因为国家和地区之间有一个定义的属性关系，所以，当选择一个国家的CurrentMember在查询时因为地区的变化引起地区所在的国家的变化。授予属性的成员访问权限，将会同时授予与该属性有直接或间接的关系的低颗粒度属性，但不会发生在更高的颗粒度属性，所以North American成员和总计（这是在层次结构中的所有成员），不能访问。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;最后这一点引发了另一个问题：如果该角色的用户从Sales Territory没有选择任何选项而查询Cube会发生什么？&lt;br /&gt;我们看下图：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pT8_Na3snnPHTy51RMZ_FJhkH7FuVXVBrcd7iWLyMYXnVpbKmAyERdo6B89n0PL1jjc0kxeBS2TvYtXlrAIbBgg/2012-5-3%2015-53-40.png?psid=1" alt="邀月工作室" width="708" height="372" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这是因为：默认成员是All Members，无权限访问，&lt;span style="font-family: 宋体;"&gt;而选择"Canada"时可以读取。&lt;/span&gt;&lt;br /&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pT8_Na3snnPH4pn4eoO4UsL5ecIucpoBo27eq0plbLYHcheoM2Khn_kkm8nUUQliBpJhqLMFQqZUAh2uYrIiYQg/2012-5-3%2015-56-27.png?psid=1" alt="邀月工作室" width="716" height="406" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;Cell级别的安全控制也可用于度量。例如，读权限使用这个表达式：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;([Measures].CurrentMember IS [Measures].[Sales Amount])&lt;br /&gt;OR&lt;br /&gt;([Measures].CurrentMember IS [Measures].[Tax Amount])&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;该条件过滤后的效果如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pei6L9QAXi-xRAH7Pnbxvhv_1oP5YwlQNs7Vc7iakpPE3IzKnkzR_U2pfz7XFsd6JrPsLf2qKESrIvBOU8LNP3Q/2012-5-3%2015-59-50.png?psid=1" alt="邀月工作室" width="714" height="391" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果我们希望进一步，用户能够看到所有的国家的Sales Amount，但Total Product Cost仅限于加拿大，我们可以使用：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;[Measures].CurrentMember IS [Measures].[Sales Amount]&lt;br /&gt;OR (&lt;br /&gt;[Measures].CurrentMember IS [Measures].[Total Product Cost]&lt;br /&gt;AND&lt;br /&gt;[Sales Territory].[Sales Territory Country].CurrentMember&lt;br /&gt;IS [Sales Territory].[Sales Territory Country].&amp;amp;[Canada]&lt;br /&gt;) OR&lt;br /&gt;[Measures].CurrentMember IS [Measures].[Gross Profit]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1pzdFF2uN1n9_5pIrH4wJ-FDH6gNDy0aMIZXye71VVuGzip4X2YisGxVAUyxB-L6gAD8XYLcyiHekT_TKExTsl7g/2012-5-3%2018-47-41.png?psid=1" alt="邀月工作室" width="706" height="314" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;注意因为Gross Profit=Sales Amount-Total Product Cost这个计算关系，所以实际上这三个字段都是可见的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p7bQZvMdfKOYIO40oYyT9dg7vBrdaiw9SzZ9VHwERsLUpW30CB-iB6Y-dOFFoGJGblDL84WzCZU4cnbmgYJiCTw/2012-5-3%2018-40-16.png?psid=1" alt="邀月工作室" width="706" height="401" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;那么如何真正控制，让Gross Profit的读取权限完全符合我们的预期呢？关键的一步在于上述的表达式不应写在"Read Permissions",而应该写在"Read-Contigent Permissions"中&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="https://public.sn2.livefilestore.com/y1p7bQZvMdfKOYn2D-wtlYygsWBuQ5A1dH1sV2NNEFrb3Hwc5FxdPBLJEIwex0S9VHEZcUUnw909EB185JzX9igRA/2012-5-3%2018-41-36.png?psid=1" alt="邀月工作室" width="683" height="185" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pzdFF2uN1n98BAC_OM_nvLfpyCq_FAhQH4keuBCJ2BLWVtiWqmrUaOW60HgquSCKlKDT8tIS_99XUtdX8OMFGKQ/2012-5-3%2018-01-18.png?psid=1" alt="邀月工作室" width="695" height="381" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;本文主要学习Cube的读取和Cell安全，下节将继续了解数据安全(Data Security)中的维度安全和如何应用安全到度量，欢迎关注。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2481190.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/05/03/2481190.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/04/29/2476404.html</id><title type="text">《Expert Cube Development with Microsoft SQL Server 2008 Analysis Services》读书笔记第九章：保护Cube（一）</title><summary type="text">对Analysis Services Cube而言，安全，是一个非常重要的问题。在某种形式的安全要求下，Cube中的数据可能会非常敏感。例如，如果一个Cube包含整个公司的销售数据，我们可能需要确保每个销售人员只能查看他或她自己的数据。同样，如果一个Cube包含有关公司盈利能力数据，可能我们需要谨慎使用，以确保只有财务部和董事会有权访问它。在本系列中，我们将讨论Analysis Services（以下简称AS，邀月注）的安全模式，探索不同的方式来使用它，并追求最佳实践。</summary><published>2012-04-29T13:04:00Z</published><updated>2012-04-29T13:04:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/04/29/2476404.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/04/29/2476404.html"/><content type="html">&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;a id="homepage1_HomePageDays_ctl04_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html"&gt;SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt; 对Analysis Services Cube而言，安全，是一个非常重要的问题。在某种形式的安全要求下，Cube中的数据可能会非常敏感。例如，如果一个Cube包含整个公司的销售数 据，我们可能需要确保每个销售人员只能查看他或她自己的数据。同样，如果一个Cube包含有关公司盈利能力数据，可能我们需要谨慎使用，以确保只有财务部 和董事会有权访问它。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;在本系列中，我们将讨论Analysis Services（&lt;strong&gt;以下简称AS，邀月注&lt;/strong&gt;）的安全模式，探索不同的方式来使用它，并追求最佳实践。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;一、示例安全前提&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;假设我们正在为一家跨国公司建设一个BI解决方案，我们希望我们所有的员工和合作伙伴公司可以访问我们的Cube，条件如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;1、按国家来访问，比如加拿大的用户只能访问加拿大的数据，英国的用户只能访问英国的数据，依此类推。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;2、按代理商访问，某代理商只能访问自己公司的销售信息。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;3、限制对特定度量的访问，包括Real和calculated。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;在现实世界中，&lt;strong&gt;这些限制应该在Cube创建前就已经定义好。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;二、Analysis Services安全功能&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;AS提供了一套丰富的安全功能，使我们能够控制用户可以与一个cube交互的每一个细节。在本节中，我们将描述如何AS实际是是如何安全工作的，以及将不同类型的权限，授予用户。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;1、角色和角色成员资格&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;AS使用角色来管理安全。角色是一个安全组，用户必须是访问多维数据集的一个或多个角色的成员。我们可以授予一个角色有权访问任何cube对象或执行任何管理任务。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;　 　基于我们的要求，我们需要创建几个角色。我们需要创建安全的国家的角色，所以我们有一个法国用户的角色只允许访问数据来自法国，加拿大的用户，只授予访 问加拿大的数据，等等。同样，我们也需要有为每个经销商提供访问Cube的角色。当然，这可能意味着，我们最终有大量不同的角色。稍后在本系列中，我们将 展示如何使用一个角色，来处理许多不同权限集。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;AS使用角色来定义安全性，但一个角色，从安全模式的观点，仅仅是一个容器。安全只有当我们将用户添加到一个角色才起作用。因此，我们需要知道什么样的用户，可以添加到一个角色。答案是，只允许访问通过角色的Cube用户是Windows用户。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果你熟悉其他微软产品，如Internet信息服务或SQL Server本身，你就会知道，他们提供了几种不同的方法对用户进行身份验证：Windows集成安全性始终是一个选项，但这些产品往往执行一些其他形式的身份验证。这并不适合于AS，&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;它只支持Windows集成安全性，而不支持任何其他形式认证。&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;当我们谈到&amp;ldquo;Windows用户&amp;rdquo;的时候，我们指的是两个域用户和来自安装AS的服务器上的本地用户。本地用户经常使用的多维数据集时，是在互联网上访问。在这种情况下，将有可能是一个DMZ（&lt;em&gt;&lt;strong&gt;&lt;a href="http://zh.wikipedia.org/wiki/DMZ" target="_blank"&gt;De Militarized Zone&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;）中的Analysis Services服务器，有一个Cube的副本合作网络的的某处被其他AS服务器处理，既然DMZ中的服务器不属于某个域，我们将需要使用本地用户才能访问它。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果不想捆绑安全到指定的Windows用户，我们可以限制AS角色的成员关系到Windows用户组（更完美的是域用户组），这绝对是一个好主意。然后，我们可以通过添加和删除Windows用户到组以控制访问Cube。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;因此，为了让用户访问多维数据集和强化安全，我们需要：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;1、定义AS的角色，每个角色里的所有用户都拥有一整套权限集。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;2、定义域组，并把它们添加到角色。为清晰起见，我们应该在AS角色和域组使用相同的名称。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;3、增加域用户到这些组。 &lt;br /&gt;如果用户能够访问使用Windows集成安全的Cube,那么这将行之有效。然而有很多的情况下，集成的安全性不能使用，比如防火墙保护的服务器或其他类型的网络基础设施阻止集成安全。在这些情况下，我们将需要使用IIS，让用户通过HTTP连接到Cube，我们将介绍如何做到这一点，在本系列的后面。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;2、安全对象&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;AS数据库可以使用的安全对象包括：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（1）Data Sources&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（2）Cubes&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（3）Dimensions&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（4）Cells&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;显然，不同的安全对象，我们可以设置不同的权限。例如，我们可以授予在Cube级别权限执行钻取查询，而这对一个特定的维度没有任何意义。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;下面是安全对象可以被授权的基本类型：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;img title="" src="https://public.sn2.livefilestore.com/y1pc-C3a_b0pBqW8O0kaALyl2YZb4OmZuQSUwswhCiO2TNOhleIAj8sygUuLkP-8XqXMZQQxX-XVxnyqu228SPa3Q/2012-4-29%2017-57-43.png?psid=1" alt="邀月工作室" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;管理权限相对简单，并允许用户执行如处理一个Cube这样的任务。数据安全是更为复杂，它控制角色如何访问Cube数据；正因为如此，我们将花费更多的时间讨论数据安全及它如何实施。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;3、创建角色&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;创建角色很简单，在BIDS解决方案列表下，选Role节点，选&amp;ldquo;new Role&amp;rdquo;即可。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img title="" src="https://public.sn2.livefilestore.com/y1pgz85GixQUk5CxBeFqxzEC1kVJ-Vb9ohxAxML-BN0tFnMIGHfwnflV6ssP28kdRSK-Lp38crF6vEW2fA3MyhJDQ/2012-4-29%2018-58-26.png?psid=1" alt="邀月工作室" width="748" height="321" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;4、多个角色的成员资格&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;用户可以属于多个角色，所以我们需要了解一个用户拥有多个角色的成员时会发生什么。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果您参与过Windows中的安全工作，那么你可能会知道&amp;ldquo;deny wins over grant&amp;rdquo;的规则。这意味着，如果一个用户属于一个组，可以实现对资源的访问，但同时，该用户属于第二个组，该组被明确拒绝访问该资源，那么用户将无法访问该资源，因为在第二组中否认&amp;gt;第一组的授予。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;　　在AS中没有这样的规则。当一个用户是多个角色的成员，该用户将拥有他们在每一个角色所有的权限的并集。例如，如果一个用户属于一个角色，只能看到加拿大和其他任何一个国家，另一个角色，只能看到法国的数据资料，该用户将能够看到加拿大和法国的数据。同样，如果一个开发人员给予他们充分的管理权限，那么这将保证他们能够执行所有管理任务和看到所有cube的所有数据，即使他们也是受限角色的成员。这可能似乎奇怪，但是，不管我们喜欢与否，这是AS的安全性工作方式。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;4、测试角色&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;如果作为开发人员，可以有充分的管理权限，那么我们需要一种方法模拟，使我们可以测试更严格的角色是否正确启用。有三个途径：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（1）连接AS数据库的Cube时，我们可以设置以下两个连接字符串属性，连接字符串属性可以在SSMS中附加的连接属性连接对话框中的选项卡设置。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img title="" src="https://public.sn2.livefilestore.com/y1peXDcvBVySCha-Y-YiZl4k-ZjwxBK8Nxm2dC_A5feNalTSwBGp6zvqhk753K0lkzDnhItDWxvQOQuE1JtfV55fQ/2012-4-29%2019-00-02.png?psid=1" alt="邀月工作室" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（2）在BIDS中，双击Cube，右边展开的Browser选项卡，选择&amp;ldquo;Change User&amp;rdquo;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;img title="" src="https://public.sn2.livefilestore.com/y1pruqpiWmcX0v16iyhoUHwpMv2JG21Z6PRgyhJ3OyVTGSOSe9h8Sw4blVR5AuFr8O8_-dmvZJ0QgLrX1gI1JdRPw/2012-4-29%2020-20-11.png?psid=1" alt="邀月工作室" width="716" height="418" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（3）对客户端工具（比如Excel）使用&amp;rdquo;Run as&amp;rdquo;命令。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;strong&gt;5、管理安全&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;AS中管理权限可被授予两个等级：服务器级别和数据库级别。要成为一个AS服务器管理员，用户必须是一个特殊的角色--全服务器管理员（server-wide Administrators）的成员。在AS安装时，用户可以被添加到这个角色时。服务器管理员有没有限制，同时，某些任务，如创建数据库，只能由服务器管理员。因此，要开发Cube,我们就必须是这个角色的成员。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;&lt;img title="" src="https://public.sn2.livefilestore.com/y1pt4-bwlBOTorCOFcRW56aW9L7peAfxDm67TnOk3CEKUMJEEPKCY8729ysAfCX__tYE4Fxx8Y62_TiI49TC31p5Q/2012-4-29%2020-47-07.png?psid=1" alt="邀月工作室" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;数据库级别的管理权限授予数据库角色，我们刚刚在前面几节介绍。我们可以通过检查&amp;ldquo;常规（&lt;strong&gt;General&lt;/strong&gt;）&amp;rdquo;选项卡上的&amp;ldquo;完全控制（&lt;strong&gt;Full Control&lt;/strong&gt;）&amp;rdquo;框中的功能将所有管理权限授予到数据库中。这意味着角色的成员可以创建新的对象，编辑现有对象，处理对象等。万一我们需要更精细颗粒度控制管理权限，可以授予以下两个对整个数据库或单个对象的权限：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;（1）阅读定义(Read Definition)：允许角色成员读取一个对象的XMLA的定义，而不能够对其进行修改或读取与它相关的数据。如果用户需要能够查看对象在SSMS或BIDS（在联机模式下连接到数据库），他们必须拥有此权限的角色成员。&lt;br /&gt;（2）处理(Process)：允许一个角色的成员来处理对象。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;本系列的第一节简单易懂，希望您能在轻松阅读中有所收获。下节将继续学习数据安全(Data Security)，欢迎关注。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2476404.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/04/29/2476404.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/04/25/2469938.html</id><title type="text">SkyDrive的免费容量将由25G变为7G，老用户请尽快手动升级！！</title><summary type="text">明天上SkyDrive时注意到：SkyDrive的免费容量将由25G变为7G，SkyDrive的老用户请尽快手动升级！！</summary><published>2012-04-25T07:36:00Z</published><updated>2012-04-25T07:36:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469938.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469938.html"/><content type="html">&lt;p&gt;明天上SkyDrive时注意到：SkyDrive的免费容量将由25G变为7G，SkyDrive的老用户请尽快手动升级！！&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p7UwV5vXzATjJlRahratk-iOMhWyzadfEM-VcLJ1o6tv8VmeKagOsN2IPVIqBvHiczFQJzvAWPjWNp9KYSBvvPQ/2012-4-25%201-43-12.png?psid=1" alt="邀月工作室" width="788" height="470" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1p8X5nXzFFhEQLZmVSEkTsd871P3M1jAvK7KqnrAAbGN7Ct0d3kEuFZASEp8lmzpy8PId-uXJWeHEnv1griTrdhw/2012-4-25%201-35-35.png?psid=1" alt="邀月工作室" /&gt;&lt;br /&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pNRPFLQztCXhdNSIBXTnArsQPxsVeO3y8vrxI3lNEsy8GbrBC8p2JpdLYHF4e7A9MZNLQREELFy4yoxoJS4FSqw/2012-4-25%201-36-02.png?psid=1" alt="邀月工作室" width="795" height="349" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2469938.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469938.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/04/25/2469467.html</id><title type="text">SQL Server 2012清除连接过的服务器名称历史？</title><summary type="text">SQL Server 2012清除连接过的服务器名称历史？</summary><published>2012-04-25T03:10:00Z</published><updated>2012-04-25T03:10:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469467.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469467.html"/><content type="html">&lt;p&gt;SQL Server 2008 R2及以前版本:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2010/06/18/1760391.html" target="_blank"&gt;http://www.cnblogs.com/downmoon/archive/2010/06/18/1760391.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SQL Server 2012:&lt;/p&gt;&lt;p&gt;&amp;nbsp;删除这两个地方！请提前备份！&lt;/p&gt;&lt;p&gt;X:\Users\&lt;strong&gt;XXX&lt;/strong&gt;\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin&lt;/p&gt;&lt;p&gt;X:\Users\&lt;strong&gt;XXX&lt;/strong&gt;\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2469467.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469467.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/downmoon/archive/2012/04/25/2469167.html</id><title type="text">windows server 2008下无法检查到无线信号的解决方法</title><summary type="text">windows server 2008下无法检查到无线信号的解决方法</summary><published>2012-04-24T17:16:00Z</published><updated>2012-04-24T17:16:00Z</updated><author><name>邀月</name><uri>http://www.cnblogs.com/downmoon/</uri></author><link rel="alternate" href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469167.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469167.html"/><content type="html">&lt;p&gt;Windows Server 2008 Sp2环境下安装无线网卡驱动程序，但却无法检测到无线网络。&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pB7jQlLSKAIDU5W9kVE0VDOw0395taUt3qMxGHDm7TASNXBM1af3dULBwlQTiSd7dFsmgL6KkSr6eMeR9emOscg/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C03.png?psid=1" alt="邀月工作室" width="510" height="183" /&gt;&lt;/p&gt;&lt;p&gt;怀疑是驱动不对，重新官方下最新驱动，依然如故。用官方驱动检测结果：&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pHR_k7Dn3LUSOXBxyMvSHtSzJEB9RjsM-jgka1lS5FgveiTRkscNfobVPazZApuq84cdPmWedYhXo9b8MnkYDeg/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C01.png?psid=1" alt="邀月工作室" width="540" height="271" /&gt;&lt;/p&gt;&lt;p&gt;关闭防火墙、杀毒软件，依然没有解决。&lt;/p&gt;&lt;p&gt;最后查google知，需要在功能中启用"无线Lan服务"，类似于&amp;ldquo;桌面体验&amp;rdquo;，默认不会安装。安装后，终于出现了&amp;ldquo;无线网络&amp;rdquo;！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pLo0-JgEvVyIRFdZ22OR3zrCYf5d1pfkIjOxy6MSbA0oStsG0QpDhc1q0yRmWo2GOQwvVdDQ_RnmDqUiVS4J3Zg/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C00.png?psid=1" alt="邀月工作室" width="785" height="424" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pHR_k7Dn3LUT6cJqj2xkF61UcMES83pl6PXK3NAmrUFTl-xEoaQaARexjx6x5iDO5Bjzxla9TXZtxDdedcuCUQQ/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C02.png?psid=1" alt="邀月工作室" width="775" height="522" /&gt;&lt;/p&gt;&lt;p&gt;安装完成后&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pi8q0TFYyyAxylJm4S_PQpCOtFRrctQeuFDSggzIu7rLPWJvbyqq8AeVL-sTan2zpu7wT5WdCKvm0P2h-WwItXw/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C05.png?psid=1" alt="邀月工作室" width="774" height="473" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1phuL2ah5Du409jfm1DITCl2DzJgb9i_R8kjprMMmdnLSMETRsLnddRGxLhSyqDf4pZ7iVSyRt7oKczf3GNBlBaA/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C04.png?psid=1" alt="邀月工作室" width="535" height="269" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://public.sn2.livefilestore.com/y1pi8q0TFYyyAyqqikDqNtcBmhC1pxyHA-dmBO-Avii6OS_0hwPDZ2_3TOau8MOHkTs6AfBKF-g8mDXlr84fXCyzQ/%E6%97%A0%E7%BA%BF%E7%BD%91%E7%BB%9C06.png?psid=1" alt="邀月工作室" width="762" height="469" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/downmoon/aggbug/2469167.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/downmoon/archive/2012/04/25/2469167.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
