﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-blog.Toby-随笔分类-other tips</title><link>http://www.blogjava.net/SIDNEY/category/13413.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 02 Jan 2011 22:42:25 GMT</lastBuildDate><pubDate>Sun, 02 Jan 2011 22:42:25 GMT</pubDate><ttl>60</ttl><item><title>解析plugin-cfg.xml文件</title><link>http://www.blogjava.net/SIDNEY/archive/2010/12/31/342103.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Fri, 31 Dec 2010 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2010/12/31/342103.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/342103.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2010/12/31/342103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/342103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/342103.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;此元素启动 WebSphere HTTP 插件配置文件。它可以包含一个或多个下列元素和属性：IgnoreDNSFailures指定启动时插件是否忽略配置中的 DNS 故障。当设置为&nbsp;true&nbsp;时，如果每个 ServerCluster 中至少有一个服务器能够解析主机名，则插件忽略配置中的 DNS 故障并成功启动。任何主机名无法解析的服务器在配置期间...&nbsp;&nbsp;<a href='http://www.blogjava.net/SIDNEY/archive/2010/12/31/342103.html'>阅读全文</a><img src ="http://www.blogjava.net/SIDNEY/aggbug/342103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2010-12-31 22:47 <a href="http://www.blogjava.net/SIDNEY/archive/2010/12/31/342103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cognos 安装文档</title><link>http://www.blogjava.net/SIDNEY/archive/2009/09/02/293612.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 02 Sep 2009 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2009/09/02/293612.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/293612.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2009/09/02/293612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/293612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/293612.html</trackback:ping><description><![CDATA[<p>本节主要介绍Cognos系统的安装，建议按照本手册的具体步骤安装，如果没有分别写序号，则是指那些组件可以一次安装。<br />
2．1 Netscape Directory Server的安装和配置<br />
2．1．1 Netscape Directory Server 4.12 的安装<br />
插入&#8220;PowerPlay Enterprise Server Supplementary Software&#8221;安装盘，运行光盘上的Netscape\Directory Server\NT\d412eiu.exe。<br />
如果在安装过程中提示域名错误，则需要按照以下步骤纠正此错误。具体操作步骤如下：用右键单击&#8220;我的电脑&#8221;，单击&#8220;属性&#8221;，单击&#8220;网络标识&#8221;标签，单击&#8220;属性&#8221;，单击&#8220;其它&#8221;，添加&#8220;此计算机的主DNS后缀&#8221;。<br />
详见《PowerPlay Enterprise Server Installation and Configuration Guide》page 153。<br />
2．1．2 Netscape Directory Server 的配置<br />
插入&#8220;PowerPlay Enterprise Server&#8221;安装盘，在AutoRun的安装选择对话框中选择&#8220;Configure a Directory Server&#8221;进行安装。<br />
在Directory Server类型中，选择&#8220;Netscape 3.X/4&#8221;；<br />
在Directory Server配置对话框中，输入&#8220;Directory Server Computer&#8221;，&#8220;Password&#8221;，&#8220;Base Distinguished Name(DN)&#8221;和&#8220;Organization&#8221;的信息，其余可用缺省信息。其中，在&#8220;Directory Server Computer&#8221;中，输入LDAP服务器（本机）的机器名，在&#8220;Base Distinguished Name(DN)&#8221;中可输入&#8220;o=gdb&#8221;，在&#8220;Organization&#8221;中可输入&#8220;gdb&#8221;。<br />
详见《PowerPlay Enterprise Server Installation and Configuration Guide》page 60。<br />
2．2 Impromptu Web Reports 6.0的安装和配置<br />
插入&#8220;Impromptu Web Reports&#8221;安装盘，在AutoRun的安装选择对话框中选择&#8220;Install Cognos Impromptu Web Reports&#8221;完成安装。<br />
2．2．1 Data Store 的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;Data Store&#8221;进行安装；<br />
在创建data store存放位置的画面，单击&#8220;+&#8221;创建一个新的共享名，建议在&#8220;share name&#8221;中输入&#8220;iwr_db&#8221;，在&#8220;path&#8221;中输入&#8220;&lt;drive letter&gt;:\program files\cognos\cer1\database&#8221;。<br />
详见《Impromptu Web Reports Installation and Configuration》page 43。<br />
2．2．2 Impromptu Web Reports Server 的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;Server&#8221;进行安装。<br />
详见《Impromptu Web Reports Installation and Configuration》page 46。<br />
备注：安装过程会提示输入windows系统中安装此产品的用户的密码。此时，输入登陆windows用户密码。需要注意的是：以后如果管理员更改该用户的密码后，必须也在服务&#8220;管理工具－&gt;服务&#8221;中修改两项服务：Cognos Communication Service (cer1)和Impromptu Web Service Manager (CER1)中的登陆用户的密码，否则服务将无法启动。<br />
2．2．3 GateWay 的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装部件选择对话框中选择&#8220;GateWay&#8221;进行安装。<br />
详见《Impromptu Web Reports Installation and Configuration》page 51。<br />
2．2．4 Impromptu Web Reports Administration、IWR Samples、IWR Online Books的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;IWR Administration&#8221;、&#8220;IWR Samples&#8221;、&#8220;IWR Online Books&#8221;进行安装。<br />
详见《Impromptu Web Reports Installation and Configuration》page 31、page 57。<br />
2．3 PowerPlay Enterprise Server 6.6的安装<br />
插入&#8220;PowerPlay Enterprise Server&#8221;安装盘，在AutoRun的安装选择对话框中选择&#8220;Install Cognos PowerPlay Enterprise Server 6.6&#8221;完成安装。<br />
2．3．1 Access Manager Admin Tools、Access Manager Trusted Signon SDK、Common Logon Server 、Ticket Server的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;Access Manager Admin Tools&#8221;（不选择&#8220;Configure a Directory Server&#8221;）、&#8220;Access Manager Trusted Signon SDK&#8221;、&#8220;Common Logon Server&#8221; 、&#8220;Ticket Server&#8221;进行安装。<br />
2．3．2 配置Access Manager Administration<br />
按照以下步骤，完成Access Manager Administration的配置。<br />
1) 启动Access Manager Administration；<br />
2) 在&#8220;Authentication Information&#8221;面板中，单击&#8220;Directory Servers&#8221;文件夹；<br />
3) 从&#8220;Action&#8221;菜单中，单击&#8220;Add Connection&#8221;；<br />
4) 在&#8220;General&#8221;标签中，输入&#8220;Host&#8221;和&#8220;Base Distinguished Name&#8221;的内容，其余的输入项用缺省值。在&#8220;Host&#8221;输入项中输入LDAP服务器的机器名，在&#8220;Base Distinguished Name&#8221;中输入LDAP服务器中的配置，例如o=gdb,c=cn，单击&#8220;Test&#8221;，如果出现&#8220;the directory server is responding&#8221;的信息，则表明测试正确；<br />
5) 单击&#8220;Runtime Credentials&#8221;标签，在&#8220;Runtime Administrator Distinguished Name(DN)&#8221;中，输入登陆到目录服务器的用户名，例如Directory Manager，在&#8220;Runtime Administrator Password&#8221;中，输入用户的密码，单击&#8220;Log On&#8221;，再单击&#8220;Test&#8221;，如果出现&#8220;the credentials are valid&#8221;的信息，则表明测试正确；<br />
6) 单击&#8220;Ticket Server&#8221;标签，单击&#8220;Test&#8221;，如果出现&#8220;the ticket server is responding&#8221;的信息，则表明测试正确。<br />
详见《Impromptu Web Reports Installation and Configuration》page 41。<br />
2．3．3 配置Access Manager Configuration<br />
按照以下步骤，完成Access Manager Configuration的配置。<br />
1) 启动Access Manager Configuration Wizard；<br />
2) 在第一个窗口单击&#8220;下一步&#8221;；<br />
3) 单击&#8220;Custom&#8221;，再单击&#8220;下一步&#8221;；<br />
4) 选择&#8220;Directory Server Configuration&#8221;，再单击&#8220;下一步&#8221;；<br />
5) 在对话框中输入以下信息：<br />
Host：输入LDAP服务器的机器名字<br />
Base Distinguished Name(DN)：输入LDAP服务器中的配置，例如o=gdb,c=cn<br />
假如在对话框的底部出现&#8220;directory server is responding&#8221;的信息，则表明配置正确；<br />
6) 单击&#8220;下一步&#8221;；<br />
7) 选择&#8220;(Use the Directory Server Default Namespace)&#8221;，在单击&#8220;下一步&#8221;；<br />
8) 选择&#8220;Directory Server&#8221;，作为缺省的验证源，在单击&#8220;下一步&#8221;；<br />
9) 选择&#8220;Accept The Setting&#8221;，再单击&#8220;完成&#8221;；<br />
10) 关闭Access Manager Configuration Wizard。<br />
详见《Impromptu Web Reports Installation and Configuration》page 49。<br />
2．3．4 PowerPlay Enterprise Server、PowerPlay Enterprise Server Administration 的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;PowerPlay Enterprise Server&#8221;、&#8220;PowerPlay Enterprise Server Administration&#8221;进行安装。</p>
<p>2．3．5 配置Web Server<br />
建立Web Server 中&#8220;cognos&#8221;、&#8220;cognos/cgi-bin&#8221;、&#8220;cognos/help&#8221;、&#8220;cognos/ppwb&#8221; 4个虚拟目录，一般情况下，&#8220;cognos&#8221;、&#8220;cognos/cgi-bin&#8221;、&#8220;cognos/help&#8221;这3个虚拟目录已经在安装过程中建立，实际上，系统管理员只需要手工建立&#8220;cognos/ppwb&#8221;这个虚拟目录。<br />
建立&#8220;cognos/ppwb&#8221;虚拟目录的步骤如下：<br />
1) 在Windows 2000中，单击&#8220;开始&#8221;、&#8220;设置&#8221;、&#8220;控制面板&#8221;，双击&#8220;管理工具&#8221;，双击&#8220;Internet服务管理器&#8221;；<br />
2) 在左边面板中，展开&#8220;Internet信息服务&#8221;，再展开以本服务器的机器名为名字的文件夹；<br />
3) 展开&#8220;默认web站点&#8221;，再展开&#8220;cognos&#8221;文件夹；<br />
4) 用右键单击&#8220;cognos&#8221;，单击&#8220;新建&#8221;，再单击&#8220;虚拟目录&#8221;；<br />
5) 单击&#8220;下一步&#8221;；<br />
6) 输入虚拟目录别名&#8220;ppwb&#8221;，单击&#8220;下一步&#8221;；<br />
7) 在目录中输入&#8220;&lt;driver letter&gt;:\program files\cognos\cer1\webcontent\ppwb&#8221;，单击&#8220;下一步&#8221;；<br />
8) 只选取&#8220;读取&#8221;权限，单击&#8220;下一步&#8221;；<br />
9) 单击&#8220;完成&#8221;。<br />
其余三个虚拟目录的设置列表如下：<br />
虚拟目录别名 目录 权限<br />
cognos \program files\cognos\cer1\webcontent 读<br />
cognos/cgi-bin \program files\cognos\cer1\cgi-bin 执行<br />
cognos/help \program files\cognos\cer1\documentation\html 读<br />
详见《PowerPlay Enterprise Server Installation and Configuration Guide》page 110。<br />
2．3．6 Upfront、Upfront Server Administration 的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;Upfront&#8221;、&#8220;Upfront Server Administration&#8221;进行安装。<br />
2．4 mpromptu 6.0 Admin Edtion的安装<br />
插入&#8220;Impromptu 6.0 Administrator Edition&#8221;的安装盘，在AutoRun的安装选择对话框中选择&#8220;Install Impromptu 6.0 Administrator Edition&#8221;完成安装。<br />
Impromptu Administratior、User Define Functions、PowerPrompts 的安装<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件选择对话框中选择&#8220;Impromptu Administrator&#8221;、&#8220;User Define Functions&#8221;、&#8220;PowerPrompts&#8221;进行安装。<br />
2．5 Cognos Distribute Shuttle Builder的安装<br />
插入&#8220;Impromptu 6.0 Administrator Edition&#8221;的安装盘，在AutoRun的安装选择对话框中选择&#8220;Cognos Distribute Shuttle Builder&#8221;进行安装。<br />
详见《Impromptu Web Reports Installation and Configuration》page 23。<br />
2．6 PowerPlay Transformer Server 6.61的安装<br />
插入&#8220;PowerPlay Transformer Server 6.6&#8221;的安装盘，在AutoRun的安装选择对话框中选择&#8220;PowerPlay Transformer Server 6.61&#8221;进行安装。<br />
在安装方式中选择&#8220;custom&#8221;安装，在安装组件对话框中选择&#8220;PowerPlay for Windows&#8221;、&#8220;PowerPlay for Excle、PowerPlay Transformer&#8221;、&#8220;Schedule&#8221;、&#8220;CognosScript Editor&#8221;进行安装。<br />
2．7 Adobe Acrobat Reader 的安装</p>
<p>2．7．1 Adobe Acrobat Reader 4.05的安装<br />
插入&#8220;Impromptu Web Reports&#8221;的安装盘，运行光盘中的&#8220;\Adobe\ar405eng.exe&#8221;。<br />
详见《Impromptu Web Reports Installation and Configuration》page 24。</p>
<p>2．7．2 Adobe Acrobat Reader 简体汉字的安装<br />
插入&#8220;Impromptu Web Reports&#8221;的安装盘，运行光盘中的&#8220;\Adobe\chsfont.exe&#8221;。<br />
2．8 激活Impromptu Web Reports 的Report Server<br />
启动Server Administration，展开&#8220;Report Servers&#8221;，单击要激活的服务器，从&#8220;Actions&#8221;菜单中选择&#8220;Enable&#8221;，激活相应的 Report Server。<br />
2．9 在Upfront中添加server<br />
启动Upfront Server Administration，从&#8220;Server&#8221;菜单中选择&#8220;Add Server&#8221;，输入服务器的名字，单击&#8220;ok&#8221;。</p>
<p><br />
本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/s_sword/archive/2007/05/18/1614796.aspx</p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/293612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2009-09-02 16:21 <a href="http://www.blogjava.net/SIDNEY/archive/2009/09/02/293612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Repeater控件中使用if语句(参考)</title><link>http://www.blogjava.net/SIDNEY/archive/2008/09/24/230855.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 24 Sep 2008 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2008/09/24/230855.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/230855.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2008/09/24/230855.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/230855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/230855.html</trackback:ping><description><![CDATA[我最近在写一个BBS的项目，在显示主题列表时，我遇到了一个问题。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; BBS_Topic的数据表结构定义类似下面这样： &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; TABLE &nbsp; BBS_Topic &nbsp; <br />
&nbsp; ( &nbsp; <br />
&nbsp; Title NVARCHAR(40), &nbsp; <br />
&nbsp; Author NVARCHAR(20), &nbsp; <br />
&nbsp; PostDate DATETIME &nbsp; NOT &nbsp; NULL &nbsp; DEFAULT &nbsp; GETDATE(), &nbsp; <br />
&nbsp; Content NTEXT, &nbsp; <br />
&nbsp; Clicked INT &nbsp; NOT &nbsp; NULL &nbsp; DEFAULT &nbsp; 0, &nbsp; <br />
&nbsp; ReCount INT &nbsp; NOT &nbsp; NULL &nbsp; DEFAULT &nbsp; 0, &nbsp; <br />
&nbsp; LastReplyer NVARCHAR(20) &nbsp; <br />
&nbsp; ) &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 下面是ListTopic.aspx文件中的部分内容： &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;asp:Repeater &nbsp; ID="_TopicRepeater" &nbsp; Runat="SERVER" &nbsp; DataSource="..."&gt; &nbsp; <br />
&nbsp; &lt;ItemTemplate&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "Title") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "Author") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "Clicked") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "ReCount") &nbsp; %&gt; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;!-- &nbsp; 注意下面的if语句 &nbsp; --&gt; &nbsp; <br />
&nbsp; &lt;% &nbsp; if((int)(DataBinder.Eval(Container.DataItem, &nbsp; "ReCount"))==0){ &nbsp; %&gt; &nbsp; <br />
&nbsp; ---- &nbsp; <br />
&nbsp; &lt;% &nbsp; } &nbsp; else &nbsp; { &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "LastReplyer") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;% &nbsp; } &nbsp; %&gt; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;/ItemTemplate&gt; &nbsp; <br />
&nbsp; &lt;/asp:Repeater&gt; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 使用if语句的目的，是在于：判断当前帖子的回复次数为0时，就将LastReplyer这项显示成&#8220;----&#8221; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 而当前的帖子的回复次数不为0时，则显示回复人的名字 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 但是，这样的做法是行不通的。在IE中会出现类似的警告&#8220;没有引用Container，使用using引用...&#8221; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 至于为什么这样？可能是因为DataBinder.Eval和Container.DataItem同属Repeater类的成员的缘故。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &#8220;&lt;%# &nbsp; %&gt;&#8221;就是&#8220;作用&#8221;在Repeater上，但是if语句则不同，它是&#8220;作用&#8221;在整个页面上。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 当然，用类似下面（三目运算）的语句也可以实现上述功能： &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;%# &nbsp; ((int)(DataBinder.Eval(Container.DataItem, &nbsp; "ReCount"))==0) &nbsp; ? &nbsp; "--" &nbsp; <br />
&nbsp; : &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "LastReplyer") &nbsp; %&gt; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 可问题是，对于复杂的判断处理，这样的做法就相当困难了。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 那么 &nbsp; &lt;%# &nbsp; if &nbsp; ... &nbsp; else &nbsp; ... &nbsp; %&gt; &nbsp; 这样的又用法为什么也不行呢？ &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 因为 &nbsp; &lt;%# &nbsp; %&gt; &nbsp; 想当于 &nbsp; &lt;%= &nbsp; %&gt;，而 &nbsp; &lt;%= &nbsp; %&gt; &nbsp; 就是 &nbsp; Response.Write()，那么上面的判断就显得可笑： &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; Response.Write( &nbsp; if &nbsp; ... &nbsp; else &nbsp; ... &nbsp; ) &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 如果非要在Repeater中使用if语句来判断其中的数据，那么可以采用下面的方法： &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; ###################################################################### &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;% &nbsp; int &nbsp; _nIndex=0; &nbsp; %&gt; &nbsp; 定义一个临时的整型变量 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &lt;asp:Repeater &nbsp; ID="_TopicRepeater" &nbsp; Runat="SERVER" &nbsp; DataSource="..."&gt; &nbsp; <br />
&nbsp; &lt;ItemTemplate&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "Title") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "Author") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "Clicked") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "ReCount") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;% &nbsp; <br />
&nbsp; int &nbsp; nCount=(int)(((DataView)_TopicRepeater.DataSource).Table.Rows[_nIndex++]["ReCount"]); &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; if(nCount==0) &nbsp; { &nbsp; %&gt; &nbsp; <br />
&nbsp; ---- &nbsp; <br />
&nbsp; &lt;% &nbsp; } &nbsp; else &nbsp; { &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;%# &nbsp; DataBinder.Eval(Container.DataItem, &nbsp; "LastReplyer") &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;% &nbsp; } &nbsp; %&gt; &nbsp; <br />
&nbsp; &lt;/ItemTemplate&gt; &nbsp; <br />
&nbsp; &lt;/asp:Repeater&gt; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; ###################################################################### &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 其原理是，得到_TopicRepeater的数据源（DataSource），并返回该表（Table）的当前行（Rows[_nIndex++]） &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 最后判断ReCount列是否为0？ &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 在最初的时候_nIndex被赋值为0，然后，在每一次的ItemTemplate里都自加一次。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 其目的，也就是让_nIndex记录当前正在访问的记录&#8220;行&#8221;。 &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; 完，希望能对您有所帮助... <br />
<br />
http://topic.csdn.net/t/20041021/15/3478270.html<br />
<br />
<img src ="http://www.blogjava.net/SIDNEY/aggbug/230855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2008-09-24 13:08 <a href="http://www.blogjava.net/SIDNEY/archive/2008/09/24/230855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>包调用</title><link>http://www.blogjava.net/SIDNEY/archive/2008/06/18/208842.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 18 Jun 2008 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2008/06/18/208842.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/208842.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2008/06/18/208842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/208842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/208842.html</trackback:ping><description><![CDATA[---所有配置做完后，现在就是调用它: <br />
<br />
笔者介绍三种调用方式： <br />
<br />
A:命令 <br />
开始：dtsrunui &nbsp; (有向导,按照向导,为每一个参数赋予值,就可以了)一般用于测试 <br />
<br />
B:包调用 <br />
这个也有相关书籍介绍，笔者略 <br />
<br />
C:存储过程调用 <br />
<br />
CREATE &nbsp; PROCEDURE &nbsp; my_proc1 &nbsp; AS <br />
EXEC &nbsp; master.dbo.xp_cmdshell &nbsp; 'dtsrun &nbsp; /S &nbsp; /E &nbsp; /N "水质项目监测数据导入 " &nbsp; /A "ServerName ":8= &nbsp; /A "FileName ":8= "D:\SZDATA\ExcelData\AppraiseData.xls " &nbsp; /A "DataSource ":8= "SZ " ' <br />
GO <br />
<br />
笔者稍微说明下参数定义： <br />
/S &nbsp; 服务器 &nbsp; /E &nbsp; 信任连接 &nbsp; /N &nbsp; 包名 <br />
/ &nbsp; ServerName: &nbsp; 为空 &nbsp; ,8:全局参数类型为字符 <br />
/A &nbsp; 表示全局变量 <br />
<br />
D:利用游标循环调用DTS <br />
<br />
--包参数调用的另一种方式： <br />
DECLARE &nbsp; @STCD &nbsp; varchar(10) <br />
DECLARE &nbsp; STCDS_CURSOR &nbsp; CURSOR &nbsp; FOR <br />
OPEN &nbsp; STCDS_CURSOR <br />
<br />
FETCH &nbsp; NEXT &nbsp; FROM &nbsp; STCDS_CURSOR <br />
INTO &nbsp; @STCD <br />
<br />
WHILE &nbsp; @@FETCH_STATUS &nbsp; = &nbsp; 0 <br />
BEGIN <br />
&nbsp; &nbsp; &nbsp; --调用包代码 <br />
&nbsp; &nbsp; &nbsp; EXEC( 'master.dbo.xp_cmdshell &nbsp; ' 'dtsrun &nbsp; /S &nbsp; /E &nbsp; /N "新建包 " &nbsp; /A "STCD ":3= " '+@STCD+ ' " ' ' ') <br />
&nbsp; &nbsp; &nbsp; FETCH &nbsp; NEXT &nbsp; FROM &nbsp; STCDS_CURSOR <br />
&nbsp; &nbsp; &nbsp; INTO &nbsp; @STCD <br />
END <br />
<br />
CLOSE &nbsp; STCDS_CURSOR <br />
DEALLOCATE &nbsp; STCDS_CURSOR <br />
GO <br />
<br />
<br />
E:.net调用方式： <br />
//说明需要添加 &nbsp; Microsoft.SqlServer.DTSPkg80.Package2Class &nbsp; <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; /// &nbsp; &lt;summary&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; /// &nbsp; 运行DTS（Data &nbsp; Transformation &nbsp; Services &nbsp; ） <br />
&nbsp; &nbsp; &nbsp; &nbsp; /// &nbsp; &lt;/summary&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; /// &nbsp; &lt;returns&gt; &lt;/returns&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; public &nbsp; string &nbsp; runDTS() <br />
&nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; returnValue; <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Microsoft.SqlServer.DTSPkg80.Package2Class &nbsp; package &nbsp; = &nbsp; new &nbsp; Microsoft.SqlServer.DTSPkg80.Package2Class(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; fileName &nbsp; = &nbsp; "C:\\DTStest.dts "; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; password &nbsp; = &nbsp; &nbsp; null; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; packageID &nbsp; = &nbsp; null; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; versionID &nbsp; = &nbsp; null; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string &nbsp; name &nbsp; = &nbsp; "DTStest "; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; object &nbsp; pVerpersistStfOfHost &nbsp; = &nbsp; null; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; package.LoadFromStorageFile(fileName,password,packageID,versionID,name,ref &nbsp; pVerpersistStfOfHost); <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; package.Execute(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; package.UnInitialize(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; package=null; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; returnValue &nbsp; = &nbsp; "success "; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; returnValue; <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch(Exception &nbsp; ex) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw &nbsp; ex; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; } <br />
<br />
<br />
-- <br />
<img src ="http://www.blogjava.net/SIDNEY/aggbug/208842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2008-06-18 13:06 <a href="http://www.blogjava.net/SIDNEY/archive/2008/06/18/208842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#读写xml文件</title><link>http://www.blogjava.net/SIDNEY/archive/2008/05/30/204114.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Fri, 30 May 2008 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2008/05/30/204114.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/204114.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2008/05/30/204114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/204114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/204114.html</trackback:ping><description><![CDATA[<div align="center">
<h1 class="aTitle">c#读写xml文件</h1>
</div>
<table width="97%" align="center">
    <tbody>
        <tr>
            <td align="center">[日期：<span id="TimeLabel">01-16</span>]&nbsp;[字体：<a href="javascript:ContentSize(16)">大</a> <a href="javascript:ContentSize(14)">中</a> <a href="javascript:ContentSize(12)">小</a>] </td>
        </tr>
    </tbody>
</table>
<div class="content" id="BodyLabel" style="padding-right: 10px; display: block; padding-left: 10px; padding-bottom: 0px; padding-top: 0px">c#读写xml文件<br />
已知有一个XML文件（bookstore.xml）如下：<br />
&lt;?xml version="1.0" encoding="gb2312"?&gt;<br />
&lt;bookstore&gt;<br />
&nbsp; &lt;book genre="fantasy" ISBN="2-3631-4"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;Oberon's Legacy&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;author&gt;Corets, Eva&lt;/author&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;price&gt;5.95&lt;/price&gt;<br />
&nbsp; &lt;/book&gt;<br />
&lt;/bookstore&gt;<br />
&nbsp;<br />
1、往&lt;bookstore&gt;节点中插入一个&lt;book&gt;节点：<br />
&nbsp;&nbsp; XmlDocument xmlDoc=new XmlDocument();<br />
&nbsp;&nbsp; xmlDoc.Load("bookstore.xml");<br />
&nbsp;&nbsp; XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找&lt;bookstore&gt;<br />
&nbsp;&nbsp; XmlElement xe1=xmlDoc.CreateElement("book");//创建一个&lt;book&gt;节点<br />
&nbsp;&nbsp; xe1.SetAttribute("genre","李赞红");//设置该节点genre属性<br />
&nbsp;&nbsp; xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性<br />
&nbsp;<br />
&nbsp;&nbsp; XmlElement xesub1=xmlDoc.CreateElement("title");<br />
&nbsp;&nbsp; xesub1.InnerText="CS从入门到精通";//设置文本节点<br />
&nbsp;&nbsp; xe1.AppendChild(xesub1);//添加到&lt;book&gt;节点中<br />
&nbsp;&nbsp; XmlElement xesub2=xmlDoc.CreateElement("author");<br />
&nbsp;&nbsp; xesub2.InnerText="候捷";<br />
&nbsp;&nbsp; xe1.AppendChild(xesub2);<br />
&nbsp;&nbsp; XmlElement xesub3=xmlDoc.CreateElement("price");<br />
&nbsp;&nbsp; xesub3.InnerText="58.3";<br />
&nbsp;&nbsp; xe1.AppendChild(xesub3);<br />
&nbsp;<br />
&nbsp;&nbsp; root.AppendChild(xe1);//添加到&lt;bookstore&gt;节点中<br />
&nbsp;&nbsp; xmlDoc.Save("bookstore.xml");<br />
//===============================================<br />
结果为：<br />
&lt;?xml version="1.0" encoding="gb2312"?&gt;<br />
&lt;bookstore&gt;<br />
&nbsp; &lt;book genre="fantasy" ISBN="2-3631-4"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;Oberon's Legacy&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;author&gt;Corets, Eva&lt;/author&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;price&gt;5.95&lt;/price&gt;<br />
&nbsp; &lt;/book&gt;<br />
&nbsp; &lt;book genre="李赞红" ISBN="2-3631-4"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;CS从入门到精通&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;author&gt;候捷&lt;/author&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;price&gt;58.3&lt;/price&gt;<br />
&nbsp; &lt;/book&gt;<br />
&lt;/bookstore&gt;<br />
&nbsp;<br />
2、修改节点：将genre属性值为&#8220;李赞红&#8220;的节点的genre值改为&#8220;update李赞红&#8221;，将该节点的子节点&lt;author&gt;的文本修改为&#8220;亚胜&#8221;。<br />
&nbsp;&nbsp;&nbsp; XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点<br />
&nbsp;&nbsp; foreach(XmlNode xn in nodeList)//遍历所有子节点<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型<br />
&nbsp;&nbsp;&nbsp; if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为&#8220;李赞红&#8221;<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; xe.SetAttribute("genre","update李赞红");//则修改该属性为&#8220;update李赞红&#8221;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点<br />
&nbsp;&nbsp;&nbsp;&nbsp; foreach(XmlNode xn1 in nls)//遍历<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlElement xe2=(XmlElement)xn1;//转换类型<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(xe2.Name=="author")//如果找到<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xe2.InnerText="亚胜";//则修改<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;//找到退出来就可以了<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp;<br />
&nbsp;&nbsp; xmlDoc.Save("bookstore.xml");//保存。<br />
//==================================================<br />
最后结果为：<br />
&lt;?xml version="1.0" encoding="gb2312"?&gt;<br />
&lt;bookstore&gt;<br />
&nbsp; &lt;book genre="fantasy" ISBN="2-3631-4"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;Oberon's Legacy&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;author&gt;Corets, Eva&lt;/author&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;price&gt;5.95&lt;/price&gt;<br />
&nbsp; &lt;/book&gt;<br />
&nbsp; &lt;book genre="update李赞红" ISBN="2-3631-4"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;CS从入门到精通&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;author&gt;亚胜&lt;/author&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;price&gt;58.3&lt;/price&gt;<br />
&nbsp; &lt;/book&gt;<br />
&lt;/bookstore&gt;<br />
&nbsp;<br />
3、删除 &lt;book genre="fantasy" ISBN="2-3631-4"&gt;节点的genre属性，删除 &lt;book genre="update李赞红" ISBN="2-3631-4"&gt;节点。<br />
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;<br />
&nbsp;<br />
&nbsp;&nbsp; foreach(XmlNode xn in xnl)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; XmlElement xe=(XmlElement)xn;<br />
&nbsp;&nbsp;&nbsp; if(xe.GetAttribute("genre")=="fantasy")<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; xe.RemoveAttribute("genre");//删除genre属性<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; else if(xe.GetAttribute("genre")=="update李赞红")<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; xe.RemoveAll();//删除该节点的全部内容<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; xmlDoc.Save("bookstore.xml");<br />
//===========================================<br />
最后结果为：<br />
&lt;?xml version="1.0" encoding="gb2312"?&gt;<br />
&lt;bookstore&gt;<br />
&nbsp; &lt;book ISBN="2-3631-4"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;title&gt;Oberon's Legacy&lt;/title&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;author&gt;Corets, Eva&lt;/author&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;price&gt;5.95&lt;/price&gt;<br />
&nbsp; &lt;/book&gt;<br />
&nbsp; &lt;book&gt;<br />
&nbsp; &lt;/book&gt;<br />
&lt;/bookstore&gt;<br />
&nbsp;<br />
4、显示所有数据。<br />
&nbsp;&nbsp; XmlNode xn=xmlDoc.SelectSingleNode("bookstore");<br />
&nbsp;<br />
&nbsp;&nbsp; XmlNodeList xnl=xn.ChildNodes;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; foreach(XmlNode xnf in xnl)<br />
&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; XmlElement xe=(XmlElement)xnf;<br />
&nbsp;&nbsp;&nbsp; Console.WriteLine(xe.GetAttribute("genre"));//显示属性值<br />
&nbsp;&nbsp;&nbsp; Console.WriteLine(xe.GetAttribute("ISBN"));<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; XmlNodeList xnf1=xe.ChildNodes;<br />
&nbsp;&nbsp;&nbsp; foreach(XmlNode xn2 in xnf1)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(xn2.InnerText);//显示子节点点文本<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }&nbsp;<br />
<br />
<br />
<br />
<br />
</div>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/204114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2008-05-30 15:58 <a href="http://www.blogjava.net/SIDNEY/archive/2008/05/30/204114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指定恢复模式</title><link>http://www.blogjava.net/SIDNEY/archive/2008/05/09/199469.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Fri, 09 May 2008 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2008/05/09/199469.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/199469.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2008/05/09/199469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/199469.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/199469.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt">恢复模式是一个数据库配置选项,控制如何记录事务日志、事务日志是否需要备份以及数据库可用的还原操作。你为数据库选择的恢复模式,根据该恢复模式执行的或没有执行的日志记录,同时涉及数据恢复问题和性能问题。</p>
<div align="center">
<table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 411.1pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="548" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <h4>学习目标:</h4>
            <p>n&nbsp; 能够解释各恢复模式间的区别</p>
            <p>n&nbsp; 能够为每个SQL Server 2005数据库选择最佳的恢复模式</p>
            <h4>预计课程时间:10分钟</h4>
            </td>
        </tr>
    </tbody>
</table>
</div>
<h3>恢复模式综述</h3>
<p style="text-indent: 21pt">SQL Server 2005为数据库提供了三种恢复模式:完整、简单和大容量日志。这些模式决定了SQL Server如何使用事务日志,如何选择它要记录的操作,以及是否截断日志。截断事务日志是删除已执行事务并把该日志空间让给新事务的过程。下面是每种恢复模式的定义。</p>
<p>n&nbsp; 在完整恢复模式下,数据库引擎把所有操作都记录到事务日志上,并且数据库引擎绝对不会截断日志。完整恢复模式能使数据库恢复到故障时间点(在SQL Server 2005 Enterprise版中,恢复到一个比这更早一些的时间点)。</p>
<p>n&nbsp; 在简单恢复模式下,数据库引擎最低限度地记录大多数操作,并在每个检查点之后截断事务日志。在简单恢复模式下,不能备份或还原事务日志。此外,也不能还原单独的数据页。</p>
<div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 1pt; border-bottom: windowtext 1pt solid">
<p>重要提示&nbsp; 简单恢复模式<br />
简单恢复模式并不适合那些无法接受丢失最新更改的数据库。</p>
</div>
<p>n&nbsp; 在大容量日志模式下,数据库引擎对大容量操作(诸如SELECT INTO和BULK INSERT)进行最小记录。在这种恢复模式下,如果一个日志备份包含任何大容量操作,就可以使数据库恢复到日志备份的结尾,但不能恢复到某个时间点。大容量日志模式仅用于大容量操作期间。</p>
<h3>如何配置恢复模式</h3>
<p style="text-indent: 21pt">在SSMS中的&#8220;数据库属性&#8221;页上可以查看为一个给定数据库指定的恢复模式,对此也可以通过查询sys.database目录视图,其基本语法如下所示:</p>
<p>SELECT name, recovery_model_desc FROM sys.databases</p>
<p style="text-indent: 21pt">要配置一个数据库的恢复模式,可以进入SSMS中的&#8220;数据库属性&#8221;页,也可以使用ALTER DATABASE语句。</p>
<p style="text-indent: 21pt">在SSMS中,通过执行下列步骤可以改变恢复模式。</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp; 在SSMS的&#8220;对象资源管理器&#8221;下展开&#8220;数据库&#8221;节点。</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp; 右击需要设置恢复模式的数据库,然后选择&#8220;属性&#8221;。选择&#8220;选项&#8221;页。</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp; 这时就可以通过&#8220;恢复模式&#8221;下拉列表改变恢复模式,如图2.3所示。</p>
<p align="center"><img height="441" src="http://book.csdn.net/BookFiles/579/img/image015.jpg" width="543" border="0"  alt="" /></p>
<p align="center">图2.3 &nbsp;通过SSMS改变恢复模式</p>
<p style="text-indent: 21pt">使用ALTER DATABASE语句配置恢复模式的基本语法如下:</p>
<p>ALTER DATABASE &lt;<em>database_name</em>&gt;</p>
<p>SET RECOVERY FULL | SIMPLE | BULK_LOGGED</p>
<p style="text-indent: 21pt">如前所述,在生产环境下建议对数据库使用完整恢复模式,因为它提供了最可恢复的配置。如果通过大容量机制定期导入数据,则可以临时将数据库的恢复模式改变为大容量日志模式,以获得更好的大容量负载性能。然而,在导入过程结束以后,应将数据库恢复为完整恢复模式。</p>
<h3>练习:改变数据库的恢复模式</h3>
<p style="text-indent: 21pt">本练习将数据库恢复模式改变为大容量日志,以获得大容量日志操作的良好性能,然后恢复到完整恢复模式。</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp; 通过执行如下ALTER DATABASE语句,将AdventureWorks数据库的数据库恢复模式设置为大容量日志恢复模式。(在改变恢复模式前,对该数据库作完整备份。)</p>
<p style="margin-left: 42pt">-- Note that you should create the C:"Backup folder at Operating <br />
&nbsp;&nbsp;&nbsp; System level before running this backup.</p>
<p style="margin-left: 42pt">BACKUP DATABASE AdventureWorks TO DISK='C:"Backup"<br />
AdventureWorks.Bak'</p>
<p style="margin-left: 42pt">GO</p>
<p style="margin-left: 42pt">--Change the Recovery Model to Bulk Logged</p>
<p style="margin-left: 42pt">ALTER DATABASE AdventureWorks</p>
<p style="margin-left: 42pt">SET RECOVERY BULK_LOGGED</p>
<p>2. &nbsp;&nbsp; 在执行大容量日志操作以后,输入并运行如下ALTER DATABASE语句,将恢复模式改回完整恢复模式,然后执行另一次完整的数据库备份,以备份刚刚装入的数据。</p>
<p style="margin-left: 42pt">ALTER DATABASE AdventureWorks</p>
<p style="margin-left: 42pt">SET RECOVERY FULL</p>
<p style="margin-left: 42pt">--Perform a Full database backup</p>
<p style="margin-left: 42pt">BACKUP DATABASE AdventureWorks TO DISK='C:"Backup"<br />
AdventureWorks.Bak'</p>
<p style="margin-left: 42pt">GO</p>
<h3>本课总结</h3>
<p>n&nbsp; 恢复模式允许我们控制数据库引擎如何记录事务日志,可以对一个特定的数据库使用哪些还原操作。</p>
<p>n&nbsp; SQL Server提供了三个恢复模式:完整、简单和大容量日志。</p>
<p>n&nbsp; 完整恢复模式是默认的模式,而且也是推荐使用的模式,它记录所有的操作,能使数据库恢复到故障时间点。</p>
<p>n&nbsp; 简单恢复模式最低限度地记录大多数操作,它不允许我们备份或还原事务日志。</p>
<p>n&nbsp; 大容量日志恢复模式最低限度地记录大容量操作,主要供大容量操作期间临时&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用。</p>
<p>n&nbsp; 通过以下两个方法可以配置一个数据库的恢复模式:通过SSMS中的&#8220;数据库属性&#8221;窗口,或者使用T-SQL语句ALTER DATABASE。</p>
<h3>课后测试</h3>
<p style="text-indent: 21pt">下列问题旨在巩固本课介绍的关键内容。如果喜欢用电子版的,可以参见配套CD。</p>
<div style="border-right: medium none; padding-right: 0cm; border-top: windowtext 1pt solid; padding-left: 0cm; padding-bottom: 1pt; border-left: medium none; padding-top: 1pt; border-bottom: windowtext 1pt solid">
<p>提示&nbsp; 参考答案<br />
这些题目的参考答案以及对每个选项的具体解释,参见本书后面的&#8220;参考答案&#8221;部分。</p>
</div>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp; 下列关于恢复模式的说法,哪个是正确的?</p>
<p>A.&nbsp;&nbsp;&nbsp; 在简单恢复模式下,大多数事务被最低限度地记录到日志中</p>
<p>B.&nbsp;&nbsp;&nbsp; 在完整恢复模式下,大多数事务被最低限度地记录到日志中</p>
<p>C.&nbsp;&nbsp;&nbsp; 在大容量日志恢复模式下,所有事务都被记录到日志中</p>
<p>D.&nbsp;&nbsp;&nbsp; 在简单恢复模式下,所有事务都被记录到日志中</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp; 下列哪种方式允许你改变数据库恢复模式?(选择所有正确答案)</p>
<p>A.&nbsp;&nbsp;&nbsp; sp_configure存储过程</p>
<p>B.&nbsp;&nbsp;&nbsp; SSMS中的数据库属性</p>
<p>C.&nbsp;&nbsp;&nbsp; ALTER DATABASE</p>
<p>D.&nbsp;&nbsp;&nbsp; CREATE DATABASE</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp; 在简单恢复模式下,下列哪些恢复操作是不允许的?(选择所有正确答案)</p>
<p>A.&nbsp;&nbsp;&nbsp; 时间点恢复</p>
<p>B.&nbsp;&nbsp;&nbsp; 差异恢复</p>
<p>C.&nbsp;&nbsp;&nbsp; 完整恢复</p>
<p>D.&nbsp;&nbsp;&nbsp; 页恢复</p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/199469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2008-05-09 13:15 <a href="http://www.blogjava.net/SIDNEY/archive/2008/05/09/199469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Best Practices for Troubleshooting Slow Running Queries</title><link>http://www.blogjava.net/SIDNEY/archive/2008/05/09/199462.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Fri, 09 May 2008 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2008/05/09/199462.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/199462.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2008/05/09/199462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/199462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/199462.html</trackback:ping><description><![CDATA[<table style="background: white; width: 100%" cellspacing="0" cellpadding="0" width="100%" bgcolor="white" border="0">
    <tbody>
        <tr>
            <td style="padding-right: 1.5pt; padding-left: 1.5pt; padding-bottom: 1.5pt; padding-top: 1.5pt" colspan="2">
            <p><strong><font face="Tahoma" color="black" size="2"><span style="font-size: 10pt">Best Practices for Troubleshooting Slow Running Queries</font></strong></span></p>
            </td>
        </tr>
        <tr>
            <td style="padding-right: 1.5pt; padding-left: 1.5pt; padding-bottom: 1.5pt; width: 100%; padding-top: 1.5pt" valign="top" width="100%">
            <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">In this article we will share some of the common reasons for slow-running queries and what your approach should be for identifying and fixing them. The best and the quickest way to address any slow running query should be by first preparing a Troubleshooting Checklist or Troubleshooting Guide and than by using it during slow running query situations. This way it can help any developer or DBA to easily and quickly narrow down the issue. (This troubleshooting guide or checklist should be posted on a central location from where all the DBA's / Developers of your team can access and update when required)</span></font></p>
            <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">Please note:</span></font></strong></strong><font face="Verdana"><span style="background: white; font-family: Verdana"> If you experience something new which is not listed in the below list than you may update your TSG (Troubleshooting Guide) appropriately. </span></font></p>
            <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">Queries or updates that take more than the expected time to execute can be caused by a variety of reasons. Slow-running queries can be caused by performance problems related to your network or the computer where SQL Server is running. Slow-running queries can also be caused by problems with your physical database design and SQL Server configuration.</span></font></p>
            <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">Some of the most common reasons for slow-running queries and updates are:</span></font></p>
            <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">1) CPU could be causing the bottleneck</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">2) Slow network communication (high latency).</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">3) Insufficient memory in the server computer, or the memory is not properly configured for SQL Server instance.</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">4) Insufficient useful statistics on indexed columns.</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">5) Outdated statistics on indexed columns.</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">6) Insufficient useful indexes.</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">7) Lack of useful indexed views.</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">8) Lack of useful data striping.</span></font></strong></strong></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">9) Improper partitioning of data.</span></font></strong></strong></p>
            <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">Troubleshooting Checklist (covering most common scenarios) </span></font></p>
            <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">1) CPU could be causing the bottleneck</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">One of the most common complaints I get is that SQL Server CPU started spiking excessively all of a sudden. A CPU bottleneck that happens suddenly and unexpectedly, without any changes or load on the server may be caused due to several reasons but some of the common reasons are: </span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">1) Non-optimal query plan, </span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">2) A poor SQL Server configuration, </span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">3) Improper Application/Database design, </span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">4) Insufficient hardware resources. </span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Read more about <a href="http://sqlcommunity.com/Default.aspx?tabid=77&amp;id=57"><font size="3"><span style="font-size: 12pt">&#8220;How to detect if SQL Server has bottleneck or not?&#8221;</span></font></a></span></font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">2) Could it be slow network communication (high latency).</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Investigate if the performance problem is related to a component other than queries? For example, is there a problem with network performance, do you see any latency issue, try copying the files across to measure the performance of your network. Also, try to identify if there are any other components that might be causing or contributing to performance degradation?</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What tool to use? </span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">The Windows System Monitor can be used to monitor the performance of SQL Server and non-SQL Server related components. </span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?:</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms191246.aspx"><font size="3"><span style="font-size: 12pt">http://msdn2.microsoft.com/en-us/library/ms191246.aspx</span></font></a> </span></font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">3) Could it be Insufficient memory on the server computer, or the memory is not properly configured </span></font></strong></strong></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">for SQL Server instance?</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">If your investigation reveals that the performance issue is related to queries then Identify which query or set of queries are involved?</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What tool to use?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">You may use SQL Server Profiler to help identify the slow query or queries. </span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms187929.aspx"><font size="3"><span style="font-size: 12pt">http://msdn2.microsoft.com/en-us/library/ms187929.aspx</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What&#8217;s next?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">After you have identified the slow-running query or queries, you can further analyze query performance by producing a query SHOWPLAN, which can be a text, XML, or graphical representation of the query execution plan that the query optimizer generates. You can produce query SHOWPLAN using: </span></font></p>
                        <p style="text-indent: -18pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">&#216;&nbsp;Transact-SQL SET options, </span></font></p>
                        <p style="text-indent: -18pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">&#216;&nbsp;SQL Server Management Studio, or </span></font></p>
                        <p style="text-indent: -18pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">&#216;&nbsp;SQL Server Profiler.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info: </span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms180765.aspx" target="_blank"><font size="3"><span style="font-size: 12pt">How to use Transact-SQL SET options to display test and XML execution plans</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms178071.aspx"><font size="3"><span style="font-size: 12pt">How to use SQL Server Management Studio to display graphical execution plans</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms190233.aspx"><font size="3"><span style="font-size: 12pt">How to use SQL Server Profiler to display text and XML execution plans</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">The information gathered by these tools would allow you to determine how a query is executed by the SQL Server query optimizer and which indexes are being used. This could help you determine if performance improvements can be made by rewriting the query, changing the indexes on the tables, or perhaps modifying the database design. </span></font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">4) Could it be due to Insufficient useful statistics on indexed columns.</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Investigate if the query was optimized with useful statistics or not? In SQL Server, statistics on the distribution of values in a column are created automatically on the indexed columns. They can also be created on non-indexed columns either manually using SQL Server Management Studio or CREATE STATISTICS statement, or automatically, if the AUTO_CREATE_STATISTICS database option is set to TRUE. These statistics can be used by the query processor to determine the optimal strategy for evaluating a query. Maintaining additional statistics on non-indexed columns involved in join operations can improve query performance.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Alternatively, you can also monitor the query using SQL Server Profiler or the graphical execution plan in SQL Server Management Studio to determine if the query has enough statistics.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What tools to use?</span></font></strong></strong></p>
                        <p style="text-indent: -18pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">&#216;&nbsp;You can use Create Statistics, AUTO_CREATE_STATISTICS for creating and updating indexes. (Look at the below section for resource links)</span></font></p>
                        <p style="text-indent: -18pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">&#216;&nbsp;You can also use SQL Server Profiler to determine if query has enough statistics</span></font></p>
                        <p style="text-indent: -18pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">&#216;&nbsp;You can also use Graphical Execution plan from SQL Server Management studio to determine if query has enough statistics or not.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms188038.aspx"><font size="3"><span style="font-size: 12pt">Create Statistics</span></font></a>, <a href="http://msdn2.microsoft.com/en-us/library/ms190397.aspx"><font size="3"><span style="font-size: 12pt">Auto_Create_Statistics</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://sqlcommunity.com/Default.aspx?tabid=153&amp;id=149"><font size="3"><span style="font-size: 12pt">Details about Statistics and Indexes by Kalen Delaney</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://sqlcommunity.com/ScriptsTools/SQLServerScriptsCategorized/tabid/56/id/15/language/en-US/Default.aspx"><font size="3"><span style="font-size: 12pt">Script to get the facts whether STATISTICS are required or not by Saleem Hakani</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">5) Could it be due to outdated statistics on indexed columns.</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Check if the query statistics are up to date? Are the statistics automatically updated? </span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">SQL Server would automatically create and update query statistics on indexed columns (as long as automatic query statistic updating is not disabled). Additionally, statistics can be updated on non-indexed columns either manually, using SQL Server Management Studio or the UPDATE STATISTICS statement, or automatically, if the AUTO_UPDATE_STATISTICS database option is set to TRUE. </span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Tip</span></font></strong></strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">: Up-to-date statistics are not dependent upon date or time data. If no UPDATE operations have taken place, the query statistics are still up-to-date.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What tool to use?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">You may use Auto_Create_Statistics property of the database to enable or disable the creation of statistics automatically.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/bb522682(SQL.100).aspx"><font size="3"><span style="font-size: 12pt">You may use ALTER DATABASE option to enable AUTO_CREATE_STATISTICS on a database.</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">6) Could it be due to Insufficient useful indexes.</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Investigate if suitable indexes are available? Investigate if adding one or more indexes can improve query performance?</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms191195.aspx"><font size="3"><span style="font-size: 12pt">General Index Design Guidelines</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms345417.aspx"><font size="3"><span style="font-size: 12pt">Finding Missing Indexes</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms173494.aspx"><font size="3"><span style="font-size: 12pt">Database Engine Tuning Advisor Reference</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms166575.aspx"><font size="3"><span style="font-size: 12pt">Database Engine Tuning Advisor Tutorial</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">7) Could it be the lack of useful indexed views.</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Identify if there are there any data or index hot spots? You may also consider using disk striping which can be implemented by using RAID (redundant array of independent disks) level 0 in which the data is distributed across multiple disk drives.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms187087.aspx"><font size="3"><span style="font-size: 12pt">Using files and file groups</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms184252.aspx"><font size="3"><span style="font-size: 12pt">Basics of RAID in SQL Server</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms190764.aspx"><font size="3"><span style="font-size: 12pt">Different RAID levels in SQL Server</span></font></a> </span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">8) Could it be due to lack of useful data striping.</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Check if the query optimizer has provided with the best opportunity to optimize a complex query?</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms188722.aspx"><font size="3"><span style="font-size: 12pt">Query Optimization Recommendations</span></font></a></span></font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: yellow; font-family: Verdana">9) Could it be due to improper partitioning of data.</span></font></strong></strong></p>
            <table style="border-collapse: collapse" cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; background: #f2f2f2; padding-bottom: 0cm; border-left: black 1pt solid; width: 431.6pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="575" bgcolor="#f2f2f2">
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">What to do?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Check if you have a large volume of data and if you do then you need to partition that data to achieve maximum performance from your queries. Data manageability is the main benefit of partitioning, but if your tables and indexes on them are partitioned similarly, partitioning can also improve query performance greatly.</span></font></p>
                        <p><font face="Verdana" color="black" size="1">&nbsp;</font></p>
                        <p><strong><strong><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana">Where to find more info?</span></font></strong></strong></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms188232.aspx"><font size="3"><span style="font-size: 12pt">Understanding SQL Server 2005 Data Partitioning</span></font></a></span></font></p>
                        <p><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; color: black; font-family: Verdana"><a href="http://msdn2.microsoft.com/en-us/library/ms191531.aspx"><font size="3"><span style="font-size: 12pt">Tuning the physical database design</span></font></a></span></font></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1">&nbsp;</font></p>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">Once you perform all the above steps you should be able to resolve the performance issues for SQL Server queries. </span></font></p>
            <p style="margin: 0cm 0cm 0pt"><font face="Verdana" color="black" size="1"><span style="font-size: 9pt; background: white; font-family: Verdana">We will be adding more data to this article as it becomes available. </span></font></p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/199462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2008-05-09 13:08 <a href="http://www.blogjava.net/SIDNEY/archive/2008/05/09/199462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DataGrid的ItemCreated和ItemDataBound事件使用小技巧！ </title><link>http://www.blogjava.net/SIDNEY/archive/2007/05/18/118470.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Fri, 18 May 2007 15:30:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/05/18/118470.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/118470.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/05/18/118470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/118470.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/118470.html</trackback:ping><description><![CDATA[<p>DataGrid的事件中，ItemCreated和ItemDataBound是尤为重要并且经常要用到的两个，其中的ItemCreated事件在DataGrid创建表格行时触发，而ItemDataBound则在数据绑定被绑定到相应的行后触发，前者可以用来在DataGrid中创建动态控件，比如下面的例子中在DataGrid的标题行中加入一个Button并注册它的Click事件，而ItemDataBound被触发时，数据已经绑定到相应的行，这时就可以获取当前行的数据，并根据这些数据来执行相应的操作，比如下面的示例中把绑定到&#8220;性别&#8221;字段的book值用string替换、为&#8220;禁止登录&#8221;列的CheckBox设置选中状态等，示例代码如下，保存为aspx文件后放在虚拟目录下即可运行：</p>
<p>&lt;%@ Page Language="C#" Debug="True"%&gt;<br>&lt;%@ Import Namespace="System" %&gt;<br>&lt;%@ Import Namespace="System.Data" %&gt;</p>
<p>&lt;script language="C#" runat="server"&gt;</p>
<p>&nbsp;void Page_Load(Object src, EventArgs e) <br>&nbsp;{<br>&nbsp;if(!Page.IsPostBack){<br>&nbsp;DataTable table=new DataTable();<br>&nbsp;table.Columns.Add(new DataColumn("编号",typeof(int)));<br>&nbsp;table.Columns.Add(new DataColumn("姓名",typeof(string)));<br>&nbsp;//性别列，用bool值表示，男为true，女为false<br>&nbsp;table.Columns.Add(new DataColumn("性别",typeof(bool)));<br>&nbsp;table.Columns.Add(new DataColumn("禁止登录",typeof(bool)));<br>&nbsp;DataRow row;<br>&nbsp;Random rd=new Random();<br>&nbsp;for(int i=0;i&lt;10;i++){<br>&nbsp;row=table.NewRow();<br>&nbsp;row[0]=i+1;<br>&nbsp;row[1]="用户"+(i+1).ToString();<br>&nbsp;row[2]=(rd.Next(0,80)%2==0); //用随机数来生成性别，以示公正原则：）<br>&nbsp;row[3]=(i%2==0);<br>&nbsp;table.Rows.Add(row);<br>&nbsp;}<br>&nbsp;MyDataGrid.DataSource=table;<br>&nbsp;MyDataGrid.DataBind();<br>&nbsp;}<br>&nbsp;}</p>
<p>void MyDataGrid_ItemCreated(object src,DataGridItemEventArgs e){<br>if(e.Item.ItemType==ListItemType.Header){<br>Button btn=new Button();<br>btn.Text=e.Item.Cells[3].Text;<br>btn.Click+=new EventHandler(btn_Click);<br>e.Item.Cells[3].Controls.Clear();<br>e.Item.Cells[3].Controls.Add(btn);<br>}<br>}</p>
<p>void MyDataGrid_ItemDataBound(object src,DataGridItemEventArgs e){<br>if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){<br>DataRowView rv=(DataRowView)e.Item.DataItem;<br>//把性别列的bool值替换为相应的文字&#8220;男&#8221;或&#8220;女&#8221;<br>if((bool)rv["性别"]==true)<br>e.Item.Cells[2].Text="男";<br>else<br>e.Item.Cells[2].Text="女";<br>//根据&#8220;禁止登录&#8221;列的值设置CheckBox的选中状态<br>CheckBox ckb=e.Item.FindControl("ckb_denyLogin") as CheckBox;<br>if(ckb!=null){<br>ckb.Checked=(bool)rv["禁止登录"];<br>}<br>}<br>}</p>
<p>void btn_Click(object src,EventArgs e){<br>string deniedUsers=""; //保存用户选中的&#8220;禁止登录&#8221;的用户编号<br>CheckBox ckb;<br>for(int i=0;i&lt;MyDataGrid.Items.Count;i++){<br>if(MyDataGrid.Items[i].ItemType==ListItemType.Item||MyDataGrid.Items[i].ItemType==ListItemType.AlternatingItem){<br>ckb=(CheckBox)MyDataGrid.Items[i].FindControl("ckb_denyLogin");<br>if(ckb!=null&amp;&amp;ckb.Checked){<br>deniedUsers+=MyDataGrid.DataKeys[i].ToString()+",";<br>}<br>}<br>}<br>deniedUsers=deniedUsers.Trim(',');<br>msglbl.Text="已被禁止登录的用户："+deniedUsers;<br>}<br>&lt;/script&gt;<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt; Webdiyer制造：）&lt;/title&gt;<br>&lt;META NAME="Generator" CONTENT="EditPlus"&gt;<br>&lt;META NAME="Author" CONTENT="Webdiyer(<a href="http://www.webdiyer.com/"><u><font color=#0000ff>http://www.webdiyer.com</font></u></a>)"&gt;<br>&lt;/head&gt;<br>&lt;body&gt;</p>
<p>&lt;form runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ASP:DataGrid id="MyDataGrid" width="500px" runat="server" OnItemCreated="MyDataGrid_ItemCreated" OnItemDataBound="MyDataGrid_ItemDataBound" DataKeyField="编号" AutoGenerateColumns=false&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HeaderStyle HorizontalAlign="center" BackColor="#9999CC"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:BoundColumn DataField="编号" HeaderText="编号"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:BoundColumn DataField="姓名" HeaderText="姓名"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:BoundColumn DataField="性别" HeaderText="性别"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TemplateColumn HeaderText="禁止登录"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemStyle HorizontalAlign="center"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:CheckBox runat="server" id="ckb_denyLogin"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:TemplateColumn&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:DataGrid&gt;<br>&lt;asp:Label runat="server" id="msglbl"/&gt;<br>&lt;/form&gt;<br>&nbsp;<br>&lt;/body&gt;<br>&lt;/html&gt;</p>
<br><br>
<p id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=225218</p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/118470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-05-18 23:30 <a href="http://www.blogjava.net/SIDNEY/archive/2007/05/18/118470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目调试时候出现组件“访问被拒绝”的解决方法的情况 </title><link>http://www.blogjava.net/SIDNEY/archive/2007/04/18/111668.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 18 Apr 2007 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/04/18/111668.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/111668.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/04/18/111668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/111668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/111668.html</trackback:ping><description><![CDATA[<div class=postTitle>&nbsp;</div>
<div class=postText>
<p>在调试ASP.net程序的时候，某某组件访问被拒绝。这时候重起IIS，电脑注销或者对ASP.NET 应用程序重新配置脚本映射（aspnet_regiis.exe -i）都不起作用。</p>
<p>出错信息：<br><strong>说明: </strong><font face=Arial>在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 <br><br></font><strong>分析器错误信息: </strong><font face=Arial>访问被拒绝：&#8220;Kind.DataAccess&#8221;。<br><br></font><strong>源错误:</strong><font face=Arial> <br><br></font>
<table width="100%" bgColor=#ffffcc>
    <tbody>
        <tr>
            <td><code>
            <pre>行 196：				&lt;add assembly="System.EnterpriseServices, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/&gt;
            行 197：				&lt;add assembly="System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/&gt;
            <font color=red>行 198：				&lt;add assembly="*"/&gt;
            </font>行 199：			&lt;/assemblies&gt;
            行 200：		&lt;/compilation&gt;</pre>
            </code></td>
        </tr>
    </tbody>
</table>
<br><strong><font face=Verdana>源文件: </font></strong>c:\winnt\microsoft.net\framework\v1.1.4322\Config\machine.config<strong><font face=Verdana> &nbsp;&nbsp; 行: </font></strong>198 <br><br><strong><font face=Verdana>程序集加载跟踪:</font></strong> 下列信息有助于确定程序集&#8220;Kind.DataAccess&#8221;无法加载的原因。<br><br>
<table width="100%" bgColor=#ffffcc>
    <tbody>
        <tr>
            <td><code>
            <pre>=== Pre-bind state information ===
            LOG: DisplayName = Kind.DataAccess
            (Partial)
            LOG: Appbase = file:///D:/jmw.net/web
            LOG: Initial PrivatePath = bin
            Calling assembly : (Unknown).
            ===
            LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
            LOG: Post-policy reference: Kind.DataAccess
            LOG: Attempting download of new URL file:///C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/jmw.net/ebbe807a/6992844c/Kind.DataAccess.DLL.
            LOG: Attempting download of new URL file:///C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/jmw.net/ebbe807a/6992844c/Kind.DataAccess/Kind.DataAccess.DLL.
            LOG: Attempting download of new URL file:///D:/jmw.net/web/bin/Kind.DataAccess.DLL.
            LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
            LOG: Post-policy reference: Kind.DataAccess, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null
            </pre>
            </code></td>
        </tr>
    </tbody>
</table>
<br>搜索Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).</p>
<p>得知：<br>最常见的原因是Indexing service服务引起的。解决方法就是停用Indexing service，或配置ASP.net 的临时目录不受Indexing service服务的影响。</p>
<p>配置ASP.net 的临时目录不受Indexing service服务的影响的步骤如下：</p>
<p>1、开始 -- 管理工具 -- 计算机管理（Win2003的位置，其他操作系统类似）打开计算机管理<br>2、展开计算机管理左边树中&#8220;服务和应用程序&#8221;节点，再在其下展开&#8220;索引服务&#8221;节点，再在其下展开&#8220;System&#8221;节点，再在其下展开&#8220;目录&#8221;节点。<br>3、在计算机管理的右边我们可以看到配置的索引服务目录。<br>4、在&#8220;目录&#8221;节点上右击鼠标，选择&#8220;新建&#8221;--&#8220;目录&#8221;<br>5、在&#8220;添加目录&#8221;对话框中，路经输入框中输入 ASP.net 的临时文件目录。默认应该是：<br>c:\&lt;WINDIR&gt;\Microsoft.NET\Framework\&lt;Version Number&gt;\Temporary ASP.NET Files 目录。<br>&lt;Version Number&gt; 指你要处理的.net版本。<br>6、在&#8220;包含在索引中吗？&#8221;选项中，选择&#8220;否&#8221;<br>7、单击&#8220;确定&#8221;按钮<br>8、在&#8220;索引服务&#8221;节点上右键单击，重启索引服务即可。</p>
</div>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/111668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-04-18 16:19 <a href="http://www.blogjava.net/SIDNEY/archive/2007/04/18/111668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于WebService传递自定义对象的问题 </title><link>http://www.blogjava.net/SIDNEY/archive/2007/04/04/108484.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 04 Apr 2007 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/04/04/108484.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/108484.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/04/04/108484.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/108484.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/108484.html</trackback:ping><description><![CDATA[<div class=postTitle>&nbsp;</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近做一个项目，用Castle封装数据层，用WebService封装业务层(主要是由于系统采用CS,BS混和型，这样做可以不用重复写业务，而且Cs部分也不用装Oracle客户端），本来计划的挺好的，觉得应该不会有太多问题。以前用WS都是用DataSet传输数据的，也没有太关注过序列化的问题。而且也没有用过Nhibernate真正的做过项目。<br></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在问题就出来了，当我想用一个通用的方法接受Ws传递回来的对象数据，就发现有问题了。WS根本不能识别这些对象，换句专业的话说就是不能序列化。这个问题我问了TerryLee，以及其他一些人，都没有找到好的解决方法。后来jickjick520告诉我在webmethod前面加特性[XmlInclude(typeof(myclass))].&nbsp;&nbsp; 的确是客户端可以接受到。但是解决不了通用性的问题，因为这个相当于是硬编码的，而且typeof(object)测试不能通过。也就是说假如客户端用hql语句从WS处取得结果对象集，WS没办法传递回去。如果这个问题不解决，那么就需要在WEB层定义好客户端需要查询的语句，直接让客户端传递参数进来，并且一个表就要对应N个Web方法，都要在方法前面加入[XmlInclude(typeof(XXX))].&nbsp;&nbsp; 实在是懒惰，终于测试了很多方法比如公共继承等后，发现了一个还勉勉强强的方法：<br></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每次我们引用WS的时候，都会在当前应用程序下面生成一个文件夹，下面有reference.cs这个文件，仔细观察，就发现他生成的都是些代理方法，并且在最下面还会有一些返回自定义类型对应的类！有区别的是，这些类都没有方法，只是一个个public的成员变量，也就是他把实体类public的R/W属性对应成了成员变量。<br><br><a href="http://www.cnblogs.com/microshot/archive/2006/08/30/490604.aspx">http://www.cnblogs.com/microshot/archive/2006/08/30/490604.aspx</a></p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/108484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-04-04 17:23 <a href="http://www.blogjava.net/SIDNEY/archive/2007/04/04/108484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML Webservice 总结</title><link>http://www.blogjava.net/SIDNEY/archive/2007/04/04/108454.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 04 Apr 2007 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/04/04/108454.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/108454.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/04/04/108454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/108454.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/108454.html</trackback:ping><description><![CDATA[<p>好多书籍只介绍创建XML Webservice，并没有详细介绍XML WebService的工作原理以及各部分(例如IIS Asp.net)<br>在XML WebService中所起的作用.<br>学习后整理了一下,希望对读者有所帮助!</p>
<p>(一).XML WebService作用<br>&nbsp; XML WebService在应用程序中所起的作用与.Net远程调用处理组件相同. <br>&nbsp; 用户不能直接使用WebService,只能通过Asp.net Web应用程序或Windows桌面<br>&nbsp; 客户端来调用.<br>(二).XML WebService与.Net远程处理区别<br>&nbsp; 1. XML WebService比.Net远程处理对象所受的限制更多。它类似于.Net远程处理<br>&nbsp;&nbsp;&nbsp;&nbsp; 的单独调用对象的工作机制。 不能创建一个单独的或是由客户端激活的对象.<br>&nbsp; 2.XML WebService的创建和设计比远程组件更容易/简单.<br>&nbsp; 3.Net远程处理二进制通信要比XML WebService SOAP格式通信要快捷.<br>&nbsp; 4.XML WebService较.Net远程处理扩展性强。 它支持以跨平台使用为目的的开放标准.<br>&nbsp; 5.XML WebService不需要专门的宿主程序，而是由Asp.net承载。 可以访问一些重要的<br>&nbsp;&nbsp;&nbsp; 平台服务，如：数据缓存/网络会话状态管理/身份验证/全局共享应用程序集合等。而.Net<br>&nbsp;&nbsp;&nbsp; 远程处理则很难实现这些功能.<br>&nbsp; 6.XML WebService运行在IIS和ASP.NET之上，使用http信道(80端口)与客户通信。<br>&nbsp;&nbsp;&nbsp; 可以自由跨越防火墙.<br>(三).XML WebService创建与调用过程<br>&nbsp; I.服务端创建<br>&nbsp;&nbsp;&nbsp;&nbsp; 1.使用IIS，在Web服务器上新建一个虚拟目录来存放XML Web服务.<br>&nbsp;&nbsp;&nbsp;&nbsp; 2.建立XML WebService类，使用[WebMethod]属性来标记方法可以被远程调用.<br>&nbsp;&nbsp;&nbsp;&nbsp; 3.在虚拟目录中部署XML Web服务的文件.<br>&nbsp; II.客户端使用<br>&nbsp;&nbsp;&nbsp;&nbsp; 1.客户端通过URL或文件查询或UDDI注册，发现XML WebService<br>&nbsp;&nbsp;&nbsp;&nbsp; 2.客户端请求描述XML WebService的WSDL文档。<br>&nbsp;&nbsp;&nbsp;&nbsp; 3.客户端在WSDL文档的基础上生成一个代理类。<br>&nbsp;&nbsp;&nbsp;&nbsp; 4.客户端生成代理类的实例，并调用XML Webservice，发送消息并接受处理后结果.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也就是说调用XML WebService是由客户端生成的代理类实例对象完成的.<br>(四).IIS作用<br>&nbsp; 1.IIS通过虚拟目录提供对Web服务器进行访问。简单的说： 就是将"c:\MyWeb"映射<br>&nbsp;&nbsp;&nbsp; 一个URL地址形式的虚拟目录:"<a href="http://192.168.83.66/MyWeb">http://192.168.83.66/MyWeb</a>",供本机或Internet<br>&nbsp;&nbsp;&nbsp; 上计算机访问Webservice.<br>&nbsp; 2.虚拟目录的权限与普通目录不同。根据默认设置，不允许远程用户浏览虚拟目录，运行<br>&nbsp;&nbsp;&nbsp; 可执行文件，新建文件和下载某些文件类型文件。可以根据需要自定义IIS虚拟目录权限设置.<br>&nbsp; 3.IIS对Internet进行公开处理. IIS并不负责运行Asp或Asp.net布面 或XML Webservice,而是<br>&nbsp;&nbsp;&nbsp; 维护一个注册的文件扩展名列表。如果IIS收到对某一种文件类型的请求，就把工作提交给<br>&nbsp;&nbsp;&nbsp; Asp.net工作进程，由Asp.net工作进程处理剩下的工作.<br>(五).XML WebService和SOAP标准支持的数据类型<br>&nbsp; 不知道读者有没有遇到这种情况，在调用WebService并给一个方法传递了一个DataRow参数时，运行<br>&nbsp; 时会抛出异常： "没法将参数序列化！"，如果把DataRow加入到DataSet中，并将DataSet作为参数<br>&nbsp; 传递再运行就OK了。 这是因为：XML WebService只能对数据集DataSet对象类型进行XML序列化，<br>&nbsp; 不能对DataRow对象类型进行XML序列化造成的错误.&nbsp; 所以了解一下XML WebService支持序列化的基<br>&nbsp; 本数据类型是比较重要的.它支持的数据类型如下:<br>&nbsp; 1.基本数据类型.&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标准类型，如：int float bool DateTime string等基本数据类型<br>&nbsp; 2.枚举.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 支持枚举Enum定义的类型<br>&nbsp; 3.自定义对象.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以传递任意基于自定义类或结构创建的对象。 但要注意一点： 它只能传输数据成员(变量和属性).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果定义了方法，则方法不能进行序列化传输,序列化后只剩下数据成员.<br>&nbsp; 4.DataSet对象<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 支持DataSet,切记：不支持DataTable和DataRow,DataSet已经是XML Webservice能够支持的最小的可序列化对象.<br>&nbsp; 5.XmlNode对象<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于XmlNode的对象可以表示XML文档的一部分.<br>&nbsp; 6.数组和集合<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以使用任何被支持的类型的数组和简单集合，包括: DataSet对象/XmlNode对象和自定义对象.</p>
<p>另外，关于创建XML WebService实例代码示例，几乎任何一本涉及到WebService的书籍都会讲的。而且创建一个<br>WebService非常简单. 这里就不多说了. </p>
<p>&nbsp;</p>
<br><br>
<p id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=519799</p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/108454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-04-04 16:01 <a href="http://www.blogjava.net/SIDNEY/archive/2007/04/04/108454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样看财务报表</title><link>http://www.blogjava.net/SIDNEY/archive/2007/03/13/103429.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Tue, 13 Mar 2007 01:02:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/03/13/103429.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/103429.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/03/13/103429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/103429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/103429.html</trackback:ping><description><![CDATA[
		<p>
				<a name="sec1">
				</a>
				<font color="red">问：公司财务报表应如何分析呢？</font>
		</p>
		<p>答：公司财务报表既反映了公司的财务状况，同时也是公司经营状况的综合反映。因此，通过分析公司财务报表，就能对公司财务状况及整个经营状况有个基本的了解。</p>
		<p>分析公司财务报表可以掌握反映公司经营状况的一系列基本指标和变化情况，了解公司经营实力和业绩，并将它们与其他公司的情况进行比较，从而对公司的内在价值作出基本的判断。</p>
		<p>按有关规定，上市公司应将其中期财务报表(上半年的)和年度财务报表公开发表。这样，一般投资者可从有关报刊上获得上市公司的中期和年度财务报表。</p>
		<p>公司中期报表较为简单，年度报表则较为详细，但上市公司的各种财务报表至少应包括两个基本报表，即资产负债表和利润及利润分配表。 </p>
		<font color="red">
				<p>问：资产负债表有些什么内容呢？</p>
		</font>
		<p>答：资产负债表是一张静态报表，反映了该报表截止时间时公司的资金来源及分布状况。对该 表的基本分析内容包括了解分析公司当时的财务结构、经营能力、盈利水平和偿债能力。</p>
		<p>a、流动资产，包括货币资金、短期投资、应收帐款、应收票据、坏帐准备、预付货款、其他应收款、存货、待处理流动资产净损失、一年内到期的长期债券和其他流动资产。</p>
		<p>b、长期投资，一年期以上的投资。</p>
		<p>c、固定资产，包括固定资产原值及折旧、净值、固定资产清理、在建工程、待处理固定资产净损失。</p>
		<p>d、无形及递延资产。</p>
		<p>e、流动负债，包括短期借款、应收票据、应收帐款、预收货款、应付福利费、未付股利、未缴税金、其他未缴及应付、预提费用 、一年内到期的长期负债、 其他。</p>
		<p>f、长期负债，包括长期借款及其他。</p>
		<p>g、递延税项及其他。</p>
		<p>h、股东权益，包括股本、资本公积金、盈余公积金（含公益金）、未分配利润。 </p>
		<font color="red">
				<p>问：利润及利润分配表又有什么内容呢？</p>
		</font>
		<p>答：该表是一张动态表，反映了公司在某一时期的经营成果(中期报表反映上半年，年度报表反映全年)。</p>
		<p>从公司的主营业务收入和增长率可看出公司自身业务的规模和发展速度。理想的增长模式应呈阶梯式增长，这样的公司业务进展稳定，基础扎实。大起大落的公司则不够安全稳定。 </p>
		<font color="red">
				<p>问：这两个表结合起来该如何分析呢？</p>
		</font>
		<p>答：对财务状况的分析不能静态地看一个数据或一张报表的内容，而应将各种财务数据结合起来综合分析才能看出问题的实质。投资者尤其应重视以下指标：</p>
		<p>反映获利能力指标包括：</p>
		<p>资产收益率=净利润/总资产平均余额×100%</p>
		<p>平均余额=(期初余额+期末余额)÷2</p>
		<p>股本收益率=税后利润-优先股股息/普通股股本金额×100%</p>
		<p>　　　　　　　税后利润－优先股股息<br />　　每股盈利=-----------------------<br />　　　　　　　　　普通股股本总数</p>
		<p>净利率＝税后利润/主营业务收入×100%</p>
		<p>注: 资产收益率是公司资产获利能力的综合反映, 它的高低直接反映了公司的竞争实力和发展能力, 也是决定公司是否应举债经营的重要依据。股本收益率和每股盈利的高低, 反映了公司分配股利的能力, 也是投资者最为关心的指标。净利率反映了主要经营业务获得净利的能力。</p>
		<p>反映经营能力的指标包括:</p>
		<p>　　　　　　　　　销售成本<br />　　存货周转率=--------------<br />　　　　　　　　存货平均余额 </p>
		<p>　　　　　　　　　　　　销售收入<br />　　应收帐款周转率=------------------<br />　　　　　　　　　　应收帐款平均余额</p>
		<p>　　　　　　　　　　　销售收入<br />　　资产周转率=----------------------<br />　　　　　　　　　　总资产平均余额</p>
		<p>以上三个指标分别从不同的角度反映了公司经营能力的高低, 这些指标及公司上期与同行业其他公司的平均水平相比越高越好。</p>
		<p>反映偿债能力的指标包括:</p>
		<p>自有资产比率和资产负债比率可用下面公式表示：</p>
		<p>自有资产比率＝资产净值/资产总额×100%</p>
		<p>资产负债比率＝负债额/资产总额×100%</p>
		<p>自有资产比率高，说明公司经营资产中举债的比例低，偿债的安全性较高，反之则结果相反。但是对股东来说，该比率过高并非是好现象，因为借款利率如果低 于资产报酬率，则股东可以因公司“低息举债经营”而获得更多的报酬。当然，自有资产比率过低，公司经营扩张过度，将来资金周转有可能出现困难，这对股东来说也并非是好事。</p>
		<p>流动比率可用下面公式表示：</p>
		<p>流动比率＝流动资产/流动负债</p>
		<p>流动比率用来衡量公司清偿短期负债的能力。流动比率高表示公司的短期偿债能力 强，但过高则可能是流动资产过剩，形成资金浪费。一般认为，流动比率为2:1较为适当。过低说明偿债能力不足，过高则说明资金没有有效地利用。</p>
		<p>速动比率可用下面公式表示：</p>
		<p>速动比率＝速动资产/流动负债</p>
		<p>速动资产只是流动资产中的一部分，包括现金、存款、短期证券、应收帐款等很快 能转变成现金的公司资产。该比率显示公司即期偿债的能力。一般认为1:1的比率 是较为合适的。</p>
		<p>每股净资产可用下面公式表示：</p>
		<p>每股净资产＝资产净值/普通股总数</p>
		<p>每股净资产反映了每股股票所含有的现有价值含量，该指标在对公司进行股本扩张和清 算时显得非常重要。对股东来说该指标自然是越高越好。</p>
		<p>反映市场价值的指标包括:</p>
		<p>　　　　　　　每股市价<br />市盈率=-------------------------<br />　　　　　每股前一年净盈利</p>
		<p>在把握公司经营实绩中, 应依据财务报表的分析并结合对公司其他方面的了解, 如技术水平、人员素质和重大项目情况等, 做出综合分析判断。 </p>
		<font color="red">
				<p>问：那又该如何从行业和国民经济发展状况来分析呢？</p>
		</font>
		<p>公司所在行业和国民经济发展状况是影响股票价格的重要因素, 对它们的分析主要是关注政策动向和结论，同时采用定量和定性分析相结合的方法。</p>
		<p>对行业和国民经济发展状况的全面把握是相当复杂的, 但一般通过了解政府政策及日常报告和分析它们的主要经济指标, 便可基本认识。其中最有代表性的报告是政府工作报告、指标是行业总产值 或国民生产总值。</p>
		<p>通过分析政府报告和公告，我们可以了解国家整体形势、发展方向，一段时间内政府的发展重点和扶持行业。</p>
		<p>通过分析行业总产值增长率以及与其他行业增长率的比较或国民生产总值增长速度变化情况, 我们对行业或国民经济发展的状况就有大致的了解。当然, 进一步的认识还需分析其他有关指标, 如行业的平均利润率和国家的通货膨胀率等。</p>
		<p>一般而论, 当行业总产值连续稳定增长, 且增长速度和行业平均利润率高于其他多数行业较多时, 表明该行业增长较快, 前景也较好; 反之, 行业前景就不太妙。 当国民生产总值连续稳定地较快增长且通货膨胀率又较低时, 表明国民经济发展状况及其前景较好;反之, 则情况就不妙。</p>
		<p>以上所提的这些指标情况从国家或行业发布的统计报告中即可获得。</p>
		<p>另外, 为了较全面地认识行业或国民经济发展的状况, 尤其是发展前景的预测, 还应结合对行业周期和国民经济发展周期, 特别是目前行业和国民经济所处的发展阶段进行分析。</p>
		<p>对国民经济所处发展阶段及其前景的分析应注意国家重大经济政策的变化和国家经济 计划的安排。</p>
		<p>总之, 公司所在行业和国民经济发展前景看好, 将有利于公司的发展和其股票价格的上升; 反之, 则不利。</p>
		<p>通过对公司经营实绩、所在行业和国民经济发展状况的基本分析, 我们对公司股票的实际价值就能有个基本的判断。当然, 股票的市场价格并非只取决于其实际价值, 它同时还要受其他种种因素, 尤其是直接受市场供求关系的影响。但是, 从长远看, 股票实际价值的高低终将会在市场价格上体现出来。</p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/103429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-03-13 09:02 <a href="http://www.blogjava.net/SIDNEY/archive/2007/03/13/103429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>泥泞中前行—在金融行业应用的问题分析</title><link>http://www.blogjava.net/SIDNEY/archive/2007/03/08/102585.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Thu, 08 Mar 2007 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/03/08/102585.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/102585.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/03/08/102585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/102585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/102585.html</trackback:ping><description><![CDATA[
		<div id="head">
				<h1>中国建设银行信息技术管理部北京开发中心 马琳    2005-6-10      阅读人次：18565</h1>
		</div>
		<!--显示文章正文-->
		<table id="text">
				<tbody>
						<tr>
								<td>
										<!--<table border="0" align="right">
<tr><td valign="top">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="360" height="300" VIEWASTEXT>
			<param name="movie" value="/images/servers_article_large_rectangle_txt.swf">
			<param name="quality" value="high">
			<embed src="http://www.blogjava.net/images/servers_article_large_rectangle_txt.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="360" height="300"></embed>
			</object>
			</td></tr></table>-->
										<table class="pubnormal" width="100%" align="center" border="0">
												<tbody>
														<tr>
																<td>
																		<!-- <div align="center"><IFRAME MARGINHEIGHT=0 MARGINWIDTH=0 FRAMEBORDER=0 WIDTH=360 HEIGHT=300 SCROLLING=NO src="ad.htm"></IFRAME></div><br> -->
																		<p>
																				<br />         XML以其开放、自描述、向前兼容的特性逐渐成为数据交换的事实标准，并将触角伸展到金融行业的不同领域，尽管道路不是很平坦，颇有些泥泞，但XML在金融业的应用依然向前。</p>
																		<p>
																				<b>渐行渐近的行业标准</b>
																				<br />        目前，针对不同的金融应用领域已经出现了几种不同的XML 格式。如Interactive Financial Exchange (IFX)和 Open Financial Exchange (OFX)标准，它们处理的对象是消费者和其他形式的小额银行业务。<br />        Financial Information eXchange (FIX)是作为产权交易数据的标准通信协议出现的。SWIFT在加入 ISO 15022 XML 工作组后，已经采用XML 作为主要的表示格式，并把它的历史悠久的数据模型转化成了 XML 形式。Financial Products Markup Language（金融产品标记语言，FpML）用于金融衍生市场事务，通常用于错综复杂的协商。eXtensible Business Reporting Language（可扩展商业报告语言，XBRL），主要用于商业报告和数据的准备与交换。<br />        上述这些标准都不能涵盖所有的银行业务。会计和审计制度的不同使这些标准很难应用在国内的金融行业。国内也缺乏专门的机构和人才对金融数据交换制定适合国情的，并具有一定权威性的标准，但是这些标准具有重要的参考意义不容忽视。<br /><br /><img alt="dsbee" src="http://cnw2005.cnw.com.cn/store/images/2005510111947.jpg" border="0" /><br /><b>迈过五道坎</b><br />        XML的诱惑已经使很多银行和金融公司开始制定内部的XML标准用于数据交换和存储。关于标记的制定、属性值的枚举、交易要素的多少、元素的细分等环节的随意编写也严重损害了XML的标准意义。不同银行在相同领域使用不同的XML报文规范，以及同一个银行内部不同系统之间使用不同的XML报文规范在很大程度上削弱了XML语言的开放性。<br />        同时，在XML实际用于金融数据交换时要处理好以下五个问题，迈过这五道坎之后，XML将发挥出真正的实力。<br />        1. DTD和Schema<br />        为了说明XML词汇表的语法规则，可以采用文档类型定义描述（DTD）。DTD使用正式的语法定义XML文档的结构和允许值。通过创建DTD，能够正式而精确地定义词汇表，从而使解析器可以利用DTD验证文档实例的有效性和完整性。遗憾的是DTD的数据类型对XML文件的约束显得并不详尽。例如，账号和申请人的名字均被描述成#PCDATA（字符串）。但是账号是一个整数，还可能是一个32位长的整数。另一个遗憾是，DTD使用非XML文件来描述XML文件。使用XML Schema则可以在一定程度上解决上述问题。XML Schema是一个良好格式的XML文件，提供了多种数据类型定义并允许对这些定义进行扩展、限制和组合以创建自己的复杂类型。但是需要注意的是XML Schema规范正在发展之中。<br />        作为银行跨系统的应用，使用DTD或XML Schema可以更好的表现和理解用于交换的XML文档结构，并对XML文档中的结构和内容错误进行指示。但是一般自定义的XML报文均缺少DTD或XML Schema定义，文档规则随意且不断修改。这也许在一个系统内部的交换没有什么问题，但对于跨系统和跨银行之间数据交换则会带来认识的差异和效率的低下。<br />        2. 长度与性能<br />        自解释的一个主要后果就是XML文档长度难以控制。标记和属性的显示大大加长了报文长度。报文长度的增加产生了两个方面的副作用：报文发送的成功率降低以及解析报文的内存和CPU占用增加。不论是使用SOCKET还是消息中间件进行报文传递一般都有报文长度的限制。随着报文长度的增加，通信的成功率明显降低，尤其是广域网通信。另外无论是使用DOM还是SAX解析XML文档，存在相当的内存和CPU资源占用。<br />        金融交易一般交易元素众多，特别是加入客户关系管理和综合账户信息后，发送和返回的信息明显增多。常用的一种方法是对报文压缩和进行传递，实际应用中一般压缩比可以达到30～50%。另外就是使用缩写，例如，将Transaction _Account _Number写成tranAccNum，可以降低报文长度，在一定程度上能够避免人们将过多的注意力集中于标记而忽视真正的内容，当然也不能过于简单，否则失去了使用XML语言的意义。将某些信息作为XML属性进行定义也可以减少文档的长度。<br />        3. 内存管理<br />        所有的XML解析器基本上都分成两类：基于树结构的接口，如文档对象模型（DOM）;基于事件的接口，如简单XML API （SAX）。DOM类型的接口使用树型结构作到随机遍历和修改XML文档。但是使用这种类型的接口占用内存较多。当使用XML处理大量的数据交换时会对系统产生压力，甚至出现系统崩溃。<br />基于事件的接口可能是一个好的选择。它不支持对XML文档的随机访问，而是采用一种顺序访问的方式。无论XML文档的大小，所用内存的多少基本上是一定的。同时，由于在运行时不用创建新的对象，处理器时间占用也较少。但是使用SAX类型的接口编程比较复杂，并且没有对文档的后向引用。<br />        在实际应用中，如果重视易用性，一般使用DOM接口；如更关注性能优势则选择SAX类型的接口较好。当然也可以通过减少XML元素嵌套层数减少DOM解析树的内存占用。<br />        4. 标记粒度<br />        元素的粒度在制定XML规范时总能让人产生困惑。某些内容是合在一起成为一个元素还是分开作为多个元素进行标记？例如姓名，是分成姓和名两个元素进行标记，还是放在一起作为一个元素？个人觉得关于粒度的标记定义指导原则就是一个：尽量细分。只有细分粒度越小，才可能支持各种形式的组合。另外许多信息来源于遗留系统，如果采用囫囵吞枣的方式延用其信息格式，表面上看节省了数据细分的难度，但是这对数据的共享和数据的整合会产生重大的障碍。<br />        5. 结构化定义<br />        很多时候为了提高XML文档解析的效率或缩短文档长度，有意识地避免采用多层结构化的XML文档定义。当然不是说XML文档没有根节点，但是会将节点的层次控制在2 ～3层。这显然违背了XML设计的初衷。没有了结构的XML文档同一般的交换报文还有什么差异呢？实际上大量交换的数据和信息存在层次。<br />        在金融领域，可以在业务种类和业务要素两个领域对节点层次进行划分。首先是业务种类领域。一般交易数据包含报文头、客户基本信息、账户信息、交易相关信息等几个大部分组成，其下则包含业务要素领域元素，如账户信息领域下就包括账号、账户类型、存期、币种、册号、笔号、开户日期等多个相关业务要素元素。通过这两个层次的划分，基本可以说明用于交换的XML报文的层次结构。而业务要素领域元素则可以进一步划分层次说明相关属性。 </p>
																		<!--画中画广告结束-->
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<br />
										<br />XBRL（可扩展商业报告语言，eXtensible Business Reporting Language），是 XML（可扩展的标记语言，Extensible Markup Language）于财务报告信息交换的一种应用，是目前应用于非结构化信息处理尤其是财务信息处理的最新标准和技术。XBRL在证券行业的应用，能够实现证券业内、业间的上市公司信息共享和互操作，进一步推动我国上市公司信息披露和证券信息服务业的规范、有序发展，实现上市公司信息网上披露。随着中国证券市场规模扩大和金融领域对外开放深入，国内外投资者对于上市公司财务状况和经营情况的关注程度与日俱增，XBRL的广泛应用将满足各类机构和个人对上市公司越来越高的信息披露要求，并将显示出愈来愈大的经济价值和社会效用。 <br /><br />　　 目前国际上各交易所、会计师事务所和金融服务与信息供应商等机构已采用或准备采用该项标准和技术。如东京交易所的TD net系统采用了XBRL技术报送财务数据，澳洲交易所正在研究并准备使用XBRL，德国德意志银行将XBRL用于处理贷款信息并使其信用分析过程更加流畅。XBRL自其1998年诞生起，在国际上已经获得了迅速发展，而且研究表明XBRL技术增加了公司财务报告披露的透明度。倡导XBRL国际化的XBRL国际指导委员会也早在1999年8月成立，由美国注册会计师协会与EDGAR在线、微软、普华永道等12家公司共同组建,目前世界各国已经有250多个机构参加了该组织。 </td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/102585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-03-08 13:31 <a href="http://www.blogjava.net/SIDNEY/archive/2007/03/08/102585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 TreeView IE Web 控件</title><link>http://www.blogjava.net/SIDNEY/archive/2007/01/12/93359.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Fri, 12 Jan 2007 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/01/12/93359.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/93359.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/01/12/93359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/93359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/93359.html</trackback:ping><description><![CDATA[
		<h1>
				<a name="aspnet-usingtreeviewiewebcontrol">
				</a>
				<!--NONSCROLLING BANNER END-->
		</h1>
		<p>Scott Mitchell<br />2003 年 7 月<br />适用于：Microsoft® ASP.NET</p>
		<p>
				<b>摘要：</b>了解 TreeView Web 控件，并学习如何在 ASP.NET Web 应用程序中使用 TreeView Web 控件。除了标准的 ASP.NET Web 控件（例如 TextBox、DropDownList、DataGrid、DataList 等）之外，Microsoft 还发布了附加的 Web 控件集，以充分发挥 Internet Explorer 的固有功能。这些新 Web 控件称为 <a href="http://www.asp.net/IEWebControls/Download.aspx">Internet Explorer Web 控件</a>，也简称为 IE Web 控件，共包括四种控件，TreeView Web 控件是其中之一。（本文包含一些指向英文站点的链接。）</p>
		<p>下载 <a href="http://download.microsoft.com/download/2/9/0/290e3bc2-a238-447f-ad45-98e590b3048b/TreeViewControl.msi">TreeViewControl.msi</a></p>
		<h4 class="dtH1">目录</h4>
		<p>
				<a href="http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp#aspnet-usingtreeviewiewebcontrol_topic1" target="_self">简介</a>
				<br />
				<a href="http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp#aspnet-usingtreeviewiewebcontrol_topic2" target="_self">安装 IE Web 控件</a>
				<br />
				<a href="http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp#aspnet-usingtreeviewiewebcontrol_topic3" target="_self">IE Web 控件入门</a>
				<br />
				<a href="http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp#aspnet-usingtreeviewiewebcontrol_topic4" target="_self">TreeView IE Web 控件入门</a>
				<br />
				<a href="http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp#aspnet-usingtreeviewiewebcontrol_topic5" target="_self">TreeView 的其他高级功能</a>
				<br />
				<a href="http://www.microsoft.com/china/MSDN/library/archives/library/DNAspp/html/aspnet-usingtreeviewieWebcontrol.asp#aspnet-usingtreeviewiewebcontrol_topic6" target="_self">小结</a>
		</p>
		<font class="105v">
				<a name="aspnet-usingtreeviewiewebcontrol_topic1">
				</a>简介</font>
		<p>在 2002 年，Microsoft® 发布了四种 ASP.NET Web 控件，用于为使用 Microsoft Internet Explorer 的 Web 访问者提供更好的体验。这些 Web 控件称为 Internet Explorer Web 控件，也简称为 IE Web 控件，包括以下四种控件： 
</p>
		<ul type="disc">
				<li>MultiPage Web 控件 
</li>
				<li>TabStrip Web 控件 
</li>
				<li>Toolbar Web 控件 
</li>
				<li>TreeView Web 控件 </li>
		</ul>
		<p>这些 Web 控件通过提供 Web 访问者熟悉的用户界面，增强了 ASP.NET Web 页面。例如，Toolbar Web 控件可以显示一个与各种 Microsoft Office 产品中的工具栏相类似的可单击工具栏。TabStrip 和 MultiPage Web 控件配合使用后可以显示选项卡式内容。TreeView Web 控件可以用来显示可单击、可展开的树中的数据 - 与在 Microsoft Windows® 资源管理器中用树来显示 PC 文件系统中的驱动器和文件夹很类似。（您可以在 GotDotNet 站点找到这些 Web 控件的生动演示：<a href="http://www.gotdotnet.com/team/webcontrols/toolbar/tb.aspx">WebControl Toolbar</a> 演示、<a href="http://www.gotdotnet.com/team/webcontrols/tab/tab1.aspx">TabStrip/MultiPage WebControl</a> 演示和 <a href="http://www.gotdotnet.com/team/webcontrols/treeview/tree2.aspx">TreeView Sample WebControl</a> 演示。）</p>
		<p>IE Web 控件可以在安装了 .NET Framework 版本 1.0 或 1.1 的 Web 服务器上使用。尽管 IE Web 控件是设计用来与 Internet Explorer 配合使用的，但这些 Web 控件也可以显示在其他浏览器中。不过，在 Internet Explorer 以外的浏览器中，当用户与 IE Web 控件交互时（例如展开 TreeView Web 控件中的某个节点），会发生回传。在 Internet Explorer 5.5 或更高版本中，IE Web 控件会发送 DHTML 代码，从而避免了回传的发生。也就是说，在访问您的 Web 站点时，使用 Internet Explorer 5.5 或更高版本的访问者将会比使用其他浏览器的用户获得更好的用户体验；当然，没有使用 IE 5.5 或更高版本的用户仍可以看到 IE Web 控件，并可以与之进行交互。</p>
		<p>下面，本文将主要介绍 TreeView IE Web 控件，并讨论如何使用此控件在 ASP.NET Web 页面中显示数据。有关其他 IE Web 控件的详细信息，请参阅 <a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/overview.asp">Internet Explorer Web Controls Overview</a> 和 <a href="http://msdn.microsoft.com/workshop/webcontrols/webcontrols_entry.asp">Internet Explorer Web Controls Reference</a>。</p>
		<font class="105v">
				<a name="aspnet-usingtreeviewiewebcontrol_topic2">
				</a>安装 IE Web 控件</font>
		<p>要在 ASP.NET Web 应用程序中使用 IE Web 控件，首先必须下载控件的源代码，然后运行一个编译批处理文件，对源代码进行编译并将所需的所有文件复制到相应的 Web 应用程序目录中。<a href="http://asp.net/IEWebControls/Download.aspx">Internet Explorer Web 控件下载程序包</a>是一个大小为 360 KB 的自解压安装文件。</p>
		<p>下载并安装完 IE Web 控件后，将创建一个新目录（默认为 C:\Program Files\IE Web Controls\，您也可以在安装过程中配置此目录）。找到这个新目录，然后双击 <code class="ce">build.bat</code> 文件。这将创建一个新的子目录 <code class="ce">build</code>，编译 <code class="ce">src</code> 子目录中的类，并将生成的程序集和支持文件复制到 <code class="ce">build</code> 子目录中。</p>
		<p>运行完 <code class="ce">build.bat</code> 文件后，build 子目录将包含程序集文件 <code class="ce">Microsoft.Web.UI.WebControls.dll</code> 和子目录 <code class="ce">Runtime</code>。要在 ASP.NET Web 应用程序中使用 IE Web 控件，必须将 <code class="ce">build\Runtime</code> 子目录中的内容复制到 Web 应用程序的 <code class="ce">/webctrl_client/1_0</code> 子目录中，并将程序集文件 (<code class="ce">Microsoft.Web.UI.WebControls.dll</code>) 复制到 Web 应用程序的 <code class="ce">/bin</code> 子目录中。（在 IE Web 控件的 <code>README.txt</code> 文件中，提供了示例以及执行这些任务的命令行指令。）</p>
		<font class="105v">
				<a name="aspnet-usingtreeviewiewebcontrol_topic3">
				</a>IE Web 控件入门</font>
		<p>如果使用的是 Microsoft Visual Studio® .NET 来开发 ASP.NET Web 应用程序，则将 IE Web 控件添加到 ASP.NET Web 页是件轻松的事。首先，将 IE Web 控件包含在工具箱中。要完成这项操作，请右击 Toolbox（工具箱），然后选择 Customize Toolbox（自定义工具箱）选项。选择 .NET Framework Components（.NET Framework 组件）选项卡，然后单击 Browse（浏览）按钮。找到 <code class="ce">Microsoft.Web.UI.WebControls.dll</code> 程序集文件，然后单击 OK（确定）。这会将 MultiPage、TabStrip、Toolbar 和 TreeView 等 IE Web 控件添加到 Visual Studio .NET 工具箱中。要将以上控件中的任何一种添加到 ASP.NET Web 页中，只需要将相应的控件从工具箱拖放到设计器中即可。</p>
		<p>要在内含代码的类中使用 IE Web 控件，首先需要右击 Reference（引用），然后选择 Add Reference（添加引用），将引用添加到 <code class="ce">Microsoft.Web.UI.WebControls.dll</code> 程序集中。然后，在内含代码的类中，如果使用的是 C# ，则添加 <code class="ce">using Microsoft.Web.UI.WebControls</code>；如果使用的是 Microsoft Visual Basic® .NET，则添加 <code class="ce">Imports Microsoft.Web.UI.WebControls</code>。</p>
		<p>如果不是使用 Visual Studio .NET 作为 ASP.NET Web 应用程序编辑器，则需要在 ASP.NET Web 页的顶端手动添加以下 <code class="ce">@Register</code> 指令：</p>
		<pre class="code">&lt;%@ Register TagPrefix="<i>whatever</i>" 
          Namespace="Microsoft.Web.UI.WebControls"
         Assembly="Microsoft.Web.UI.WebControls" %&gt;
</pre>
		<p>然后，将 IE Web 控件添加到 Web 页中，可以使用以下语法：</p>
		<pre class="code">&lt;whatever:WebControlName runat="server" ...&gt;
  ...
&lt;/whatever:WebControlName&gt;
</pre>
		<p>例如，要添加 TreeView 控件，可以在页面顶端添加以下 <code class="ce">@Register</code> 指令：</p>
		<pre class="code">&lt;%@ Register TagPrefix="iewc" 
         Namespace="Microsoft.Web.UI.WebControls"
         Assembly="Microsoft.Web.UI.WebControls" %&gt;
</pre>
		<p>接着，在 ASP.NET Web 页中希望显示 TreeView 的位置添加以下 Web 控件语法：</p>
		<pre class="code">&lt;iewc:TreeView<i></i>runat="server" ...&gt;
  ...
&lt;/iewc:TreeView&gt;
</pre>
		<font class="105v">
				<a name="aspnet-usingtreeviewiewebcontrol_topic4">
				</a>TreeView IE Web 控件入门</font>
		<p>当 TreeView IE Web 控件在访问者浏览器中显示时，会显示一棵树，此树与 Windows 资源管理器中的树非常类似。不同的是，TreeView 可以由任意多个 TreeNode 对象组成。每个 TreeNode 对象都可以关联文本和图像。另外，TreeNode 还可以显示为超链接并与某个 URL 相关联。每个 TreeNote 还可以包括任意多个子 TreeNote 对象。包含 TreeNode 及其子节点的层次结构构成了 TreeView 控件所呈现的树结构。</p>
		<p>假设您要构建一个用于显示家谱的 TreeView 控件。由于信息基本上不需要改动，因此您可能希望静态地指定 TreeView 结构。如果使用的是 Visual Studio .NET，则静态指定 TreeView 结构就像填写几份表格一样简单。首先，通过将 TreeView 控件从工具箱拖放到设计器中，将新的 TreeView 控件添加到 ASP.NET Web 页中。然后，将 TreeView 控件的 <code class="ce">ID</code> 属性设置为 <code class="ce">tvFamilyTree</code>。完成这两个步骤后，您的屏幕应该与<b>图 1</b> 类似。</p>
		<p class="fig">
				<img alt="" src="http://www.microsoft.com/china/msdn/Archives/library/dnaspp/images/aspnet-usingtreeviewiewebcontrol-01.gif" border="0" />
		</p>
		<p class="label">
				<b>图 1：简单的 TreeView</b>
		</p>
		<p>现在，要静态指定组成 TreeView 的 TreeNode。请从 Properties（属性）窗格中选择 Nodes（节点）属性，然后单击此属性右侧的省略号按钮。这时将显示 TreeNodeEditor（TreeNode 编辑器）对话框。现在可以将新的 TreeNode 添加到 TreeView 中。<b>图 2</b> 显示了输入家族树信息后的 TreeNodeEditor（TreeNote 编辑器）对话框。</p>
		<p class="fig">
				<img alt="" src="http://www.microsoft.com/china/msdn/Archives/library/dnaspp/images/aspnet-usingtreeviewiewebcontrol-02.gif" border="0" />
		</p>
		<p class="label">
				<b>图 2：TreeNodeEditor（TreeNote 编辑器）对话框 </b>
		</p>
		<p>填充 TreeNodeEditor（TreeNote 编辑器）对话框后，以下标记将被添加到 ASP.NET Web 页的 <code>.aspx</code> 部分：</p>
		<pre class="code">&lt;ie:TreeView id="tvFamilyTree" runat="server"&gt;
   &lt;ie:TreeNode Text="John Smith"&gt;
      &lt;ie:TreeNode Text="Born: Jan. 3rd, 1885"&gt;&lt;/ie:TreeNode&gt;
      &lt;ie:TreeNode Text="Died: Feb. 13, 1919"&gt;&lt;/ie:TreeNode&gt;
      &lt;ie:TreeNode Text="Spouse"&gt;
         &lt;ie:TreeNode Text="Marie Ellsworth"&gt;
            &lt;ie:TreeNode Text="Born: Aug. 1, 1889"&gt;&lt;/ie:TreeNode&gt;
            &lt;ie:TreeNode Text="Died: Unknown"&gt;&lt;/ie:TreeNode&gt;
         &lt;/ie:TreeNode&gt;
         &lt;ie:TreeNode Text="Children"&gt;
            &lt;ie:TreeNode Text="John Smith, Jr."&gt;
               &lt;ie:TreeNode Text="Born: July 4, 1891"&gt;&lt;/ie:TreeNode&gt;
               &lt;ie:TreeNode Text="Died: Sept. 22, 1893"&gt;&lt;/ie:TreeNode&gt;
            &lt;/ie:TreeNode&gt;
            &lt;ie:TreeNode Text="Mary Smith"&gt;
               &lt;ie:TreeNode Text="Born: June 7, 1893"&gt;&lt;/ie:TreeNode&gt;
               &lt;ie:TreeNode Text="Died: Aug. 13, 1949"&gt;&lt;/ie:TreeNode&gt;
               &lt;ie:TreeNode Text="Spouse"&gt;
                  &lt;ie:TreeNode Text="Edward Joy"&gt;
                     &lt;ie:TreeNode Text="Born: Unknown"&gt;&lt;/ie:TreeNode&gt;
                     &lt;ie:TreeNode Text="Died: Aug. 13, 
                       1949"&gt;&lt;/ie:TreeNode&gt;
                  &lt;/ie:TreeNode&gt;
                  &lt;ie:TreeNode Text="Children"&gt;
                     &lt;ie:TreeNode Text="Michael Joy"&gt;
                        &lt;ie:TreeNode Text="Born: Oct. 8,
                          1918"&gt;&lt;/ie:TreeNode&gt;
                     &lt;/ie:TreeNode&gt;
                     &lt;ie:TreeNode Text="Michele Joy"&gt;
                        &lt;ie:TreeNode Text="Born: May 21, 
                          1920"&gt;&lt;/ie:TreeNode&gt;
                     &lt;/ie:TreeNode&gt;
                  &lt;/ie:TreeNode&gt;
               &lt;/ie:TreeNode&gt;
            &lt;/ie:TreeNode&gt;
         &lt;/ie:TreeNode&gt;
      &lt;/ie:TreeNode&gt;
   &lt;/ie:TreeNode&gt;
&lt;/ie:TreeView&gt;
</pre>
		<p>如果不是使用 Visual Studio .NET 作为编辑器，则需要将此内容手动添加到 ASP.NET Web 页。当通过浏览器查看 ASP.NET Web 页时，将显示一棵可展开的树，如<b>图 3</b> 所示。（<b>图 3</b> 显示了展开各个节点后的树。默认情况下，将仅显示根节点。您可以设置 TreeNote 的 <code class="ce">Expanded</code> 属性，以指示首次查看此页面时该 TreeNote 应为展开状态。）</p>
		<p class="fig">
				<img alt="" src="http://www.microsoft.com/china/msdn/Archives/library/dnaspp/images/aspnet-usingtreeviewiewebcontrol-03.gif" border="0" />
		</p>
		<p class="label">
				<b>图 3：展开的 TreeNote</b>
		</p>
		<p>除了文本标签以外，TreeNote 还可以关联图像。尤其值得说明的是，每个 TreeNote 可以关联三幅图像：当 TreeNote 处于标准（折叠）状态时显示一幅图像；当 TreeNote 处于展开状态时显示另一幅图像；当 TreeNote 处于选中状态（当用户单击 TreeNote 时，该节点变为选中状态）时显示第三幅图像。这三种属性都需要一个指向指定图像的 URL。</p>
		<p>例如，可以通过以下方法展开家族树演示：将 TreeView 的 <code class="ce">ImageUrl</code> 属性设置为指向某个闭合的文件夹图像的 URL，将 TreeView 的 <code class="ce">ExpandedImageUrl</code> 属性设置为指向某个打开的文件夹图像的 URL，从而分别将折叠和已展开的 TreeNote 显示为闭合的文件夹和打开的文件夹。（如果要为选定的 TreeNote 换一幅图像，只需要将 TreeView 的 <code class="ce">SelectedImageUrl</code> 属性设置为相应的 URL 即可。）</p>
		<p>请注意，TreeView 和 TreeNote 都具有 <code class="ce">ImageUrl</code>、<code class="ce">ExpandedImageUrl</code> 和 <code class="ce">SelectedImageUrl</code> 属性。不同的是，当设置 <i>TreeView</i> 的属性时，默认情况下，TreeView 中<i>所有</i> TreeNote 都将显示指定的图像； 如果设置 TreeNote 的属性，则这些属性仅适用于当前特定的 TreeNote。由于我们希望所有 TreeNote 处于折叠状态时显示为闭合的文件夹，处于展开状态时显示为打开的文件夹，因此我们对 TreeView 控件的 <code class="ce">ImageUrl</code> 和 <code class="ce">ExpandedImageUrl</code> 属性进行了设置。</p>
		<p>设置完这些新属性后，<b>图 3</b> 的外观增色很多。在新的 TreeView 外观中，TreeNote 旁边都显示有图像，如<b>图 4</b> 所示。</p>
		<p class="fig">
				<img alt="" src="http://www.microsoft.com/china/msdn/Archives/library/dnaspp/images/aspnet-usingtreeviewiewebcontrol-04.gif" border="0" />
		</p>
		<p class="label">
				<b>图 4：带图像的 TreeNote</b>
		</p>
		<p>TreeNote 也可以关联 URL。当单击关联有 URL 的 TreeNote 时，会自动将用户快速链接到指定的 URL。TreeNote 的 <code class="ce">NavigateUrl</code> 属性用于指示当单击 TreeNote 时将用户链接到的 URL。该功能对于包含两个窗框的 ASP.NET Web 页非常有用。左侧窗框中包含一个 TreeView 控件。当用户单击某个 TreeNote 时，该节点的详细信息将显示在右侧窗框中，这与在 Windows 资源管理器中单击左侧窗格中的某个系统文件夹，该文件夹的文件将显示在右侧窗格中的情形类似。</p>
		<p>要关联 URL，只需要将每个 TreeNote 的 <code class="ce">NavigateUrl</code> 设置为相应的 URL。要将 TreeNote 的关联 URL 加载到其他浏览器窗框中，请将 TreeNote 的 <code class="ce">Target</code> 属性设置为相应的窗框名称。这些步骤都可以通过 TreeNodeEditor（TreeNote 编辑器）来完成。要查看此类应用程序的示例，请参阅 Steve Sharrock 关于使用 TreeView 创建资源管理器风格的 ASP.NET Web 应用程序的文章：<a href="http://www.aspalliance.com/shark/articles/TreeView/TreeViewDoc.aspx">TreeView - Programming an Explorer-style Site View</a>。</p>
		<font class="105v">
				<a name="aspnet-usingtreeviewiewebcontrol_topic5">
				</a>TreeView 的其他高级功能</font>
		<p>虽然使用 Visual Studio .NET 将静态 TreeNote 添加到 TreeView 的过程非常简单，但通常需要将内容动态地添加到 TreeView 中。例如，您将家族树信息存储到了数据库中，或是正在设计一个资源管理器风格的 Web 应用程序（在此应用程序中，用户可以浏览 Web 服务器的文件系统），这时您可能需要根据服务器的文件夹和文件来动态填充 TreeNote。</p>
		<p>在内含代码的类中，可以通过编程方式将 TreeNote 添加到 TreeView 中。要将新的 TreeNote 添加到现有的 TreeNote 中，只需要使用 Nodes 属性的 Add() 方法。例如，以下 C# 代码将创建两个 TreeNote，并将第二个 TreeNote 添加为第一个 TreeNote 的子节点。然后，将第一个子节点添加到 TreeView 的根节点中。</p>
		<pre class="code">// 创建第一个 TreeNote
TreeNode tvFirst = new TreeNode();
tvFirst.Text = "First Tree Node";

// 创建第二个 TreeNote
TreeNode tvSecond = new TreeNode();
tvSecond.Text = "Second Tree Node";

// 将第二个 TreeNote 添加为第一个 TreeNote 的子节点
tvFirst.Nodes.Add(tvSecond);

// 将第一个 TreeNote 添加到 TreeView 的根节点中。
tvFamilyTree.Nodes.Add(tvFirst);
</pre>
		<p>遗憾的是，将数据库数据绑定到 TreeView 可不像将数据绑定到某个标准 ASP.NET Web 控件那么简单。因为 TreeView 本身用于显示分层数据，所以不太适合显示简单 SQL 查询的结果。因此，TreeView 不是用来显示简单 SQL 查询的内容的，而是用来显示 XML 文件的内容。所以，为了便于在 TreeView 中显示数据库信息，必须首先将其转换为 XML。</p>
		<p>而且，虽然可以在 TreeView 控件中显示静态或动态 XML 文件，但是，TreeView 要求 XML 数据具有特定的格式。因此，要在 TreeView 中显示 XML 文件，必须提供 XSLT 样式表，以将 XML 从当前格式转换到 TreeView 要求的格式。有关如何完成此任务的详细信息，请参阅我的文章：<a href="http://aspnet.4guysfromrolla.com/articles/051403-1.aspx">Displaying XML Data in the Internet Explorer TreeView Control</a>。</p>
		<p>此外，TreeView 的 TreeNote 除了支持图像和超链接之外，其旁边还可以包含复选框。而且，当用户展开或折叠 TreeNote，选择 TreeNote，或者选中或取消选中带有复选框的 TreeNote 时，都会引发相应的事件。可以为这些事件创建事件处理程序，以自定义这些事件引发的相应操作。</p>
		<font class="105v">
				<a name="aspnet-usingtreeviewiewebcontrol_topic6">
				</a>小结</font>
		<p>在本文中，我们简要地介绍了 IE Web 控件以及如何获得和安装这些控件，并详细讨论了如何使用 TreeView IE Web 控件。TreeView 控件的显示方式类似于标准的 Windows TreeView（可通过在 Windows 资源管理器中进行操作来体验）。TreeView 用来显示分层数据，可以由任意多个 TreeNote 组成，每个 TreeNote 又可以包含任何多个子 TreeNote。</p>
		<p>可以用多种不同的方式自定义 TreeNote 的外观。例如，可以为处于折叠、展开和选中状态的 TreeNote 分别指定不同的图像。当单击 TreeNote 时，TreeNote 可以作为超链接将访问者重定向到其他 URL。TreeNote 还可以包含复选框。</p>
		<p>使用 Visual Studio .NET 并借助 TreeNote 编辑器可以很容易地实现在 TreeView 中显示静态数据。通过 XML 文件或通过以编程方式添加 TreeNote，可以动态指定 TreeView 控件的内容。虽然本文介绍的仅是 TreeView 控件的皮毛，但对于您初步了解在 ASP.NET Web 应用程序中使用 TreeView 控件也是大有帮助的。</p>
		<p>尽情享受编程的乐趣吧！</p>
		<h3 class="dtH1">推荐链接：</h3>
		<ul type="disc">
				<li>
						<a href="http://aspnet.4guysfromrolla.com/articles/051403-1.aspx">Displaying XML Data in the Internet Explorer TreeView Control</a>
				</li>
				<li>
						<a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/overview/overview.asp">Internet Explorer Web Controls Overview</a>
				</li>
				<li>
						<a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/webcontrols_entry.asp">Internet Explorer Web Controls Reference</a>
				</li>
				<li>
						<a href="http://www.msdnaa.net/Resources/display.aspx?ResID=1796">Using the Internet Explorer Web Controls</a>
				</li>
				<li>
						<a href="http://www.aspalliance.com/shark/articles/TreeView/TreeViewDoc.aspx">TreeView - Programming an Explorer-Style Site View</a>
				</li>
				<li>
						<a href="http://asp.net/Forums/ShowForum.aspx?ForumID=91">ASP.NET Forums: Internet Explorer Web</a>
				</li>
		</ul>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/93359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-01-12 11:21 <a href="http://www.blogjava.net/SIDNEY/archive/2007/01/12/93359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置HTTP访问SQL Server 2005 Analysis服务器</title><link>http://www.blogjava.net/SIDNEY/archive/2007/01/10/92962.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 10 Jan 2007 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/01/10/92962.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/92962.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/01/10/92962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/92962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/92962.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="575" border="0">
				<tbody>
						<tr>
								<th class="f24">
								</th>
						</tr>
						<tr>
								<td>
										<p align="center"> </p>
								</td>
						</tr>
						<tr>
								<td>
								</td>
						</tr>
						<tr>
								<td class="title_side" align="middle" height="20">
								</td>
						</tr>
				</tbody>
		</table>
		<div id="article">
				<table cellspacing="0" cellpadding="0" width="575" border="0">
						<tbody>
								<tr>
										<td height="3">
										</td>
								</tr>
								<tr>
										<td valign="bottom" align="right"> <font color="#ff0000"><a href="http://www.qqread.com/keywords/win2003.html">win2003</a>  <a href="http://www.qqread.com/keywords/sqlserver.html">sql server</a>  <a href="http://www.qqread.com/keywords/os.html">os</a>   </font></td>
								</tr>
								<tr>
										<td class="height170">
												<font class="f14" id="zoom">
														<span id="text999">
																<br />　　其HTTP访问机制和SQL2000 Analysis 的一样，通过在IIS中增加应用程序映射（ISAPI扩展）来实现对Analysis服务器的访问 
<p>具体步骤如下：<br /> 我的机器环境WIN2003+IIS <a href="http://www.qqread.com/keywords/sqlserver.html" target="_blank">SQL Server</a> 2005 BETA3</p><p>1、确定msmdpump.dll文件所在SQLSERVER2005目录的位置，当前它处于下面目录中<br /> C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\isapi <br />2、建立一虚拟目录指向该目录 ，如下<br /> 2。1建立一个 OLAP 的虚拟目录<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图一）" src="http://www.qqread.com/ArtImage/20060521/jg35_1.jpg" border="0" /></p><p align="center"><span id="ad_qqread_mid_big"><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&amp;dt=1168419115274&amp;lmt=1157009297&amp;alternate_ad_url=http%3A%2F%2Fwww.qqread.com%2F0000js%2Fgoogle336.htm&amp;prev_fmts=468x15_0ads_al_s&amp;format=336x280_as&amp;output=html&amp;channel=6686853775&amp;url=http%3A%2F%2Fwww.qqread.com%2Fsqlserver%2F2006%2F05%2Fp357112052.html&amp;color_bg=EDF0F5&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=EDF0F5&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dsql%25202005%2520http%2520olap%26hl%3Dzh-CN%26lr%3D%26nxpt%3D10.804570955182005319093&amp;cc=24&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency=""></iframe></span></p><br /> 2。2使该虚拟目录指向C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\isapi 目录<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图二）" src="http://www.qqread.com/ArtImage/20060521/jg35_2.jpg" border="0" /><br /> 2。3使该虚拟目录具有执行权限<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图三）" src="http://www.qqread.com/ArtImage/20060521/jg35_3.jpg" border="0" /><br />3、为OLAP虚拟目录增加应用程序映射，把.DLL请求转为 msmdpump.dll处理，如图<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图四）" src="http://www.qqread.com/ArtImage/20060521/jg35_4.jpg" border="0" /><br />好了，配置基本完成了，现在你可以启动SQL Server Management Studio应用程序通过地址 http://crserver/olap/msmdpump.dll连接到 SQL Server 2005 Analysis,如图<br /> <a href="http://www.qqread.com/ArtImage/20060521/jg35_5.jpg" target="_blank"><img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图五）" src="http://www.qqread.com/ArtImage/20060521/jg35_5.jpg" border="0" /></a><br /> <a href="http://www.qqread.com/ArtImage/20060521/jg35_6.jpg" target="_blank"><img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图六）" src="http://www.qqread.com/ArtImage/20060521/jg35_6.jpg" border="0" /></a><p></p><p>你也许会奇怪为什么http://crserver/olap/msmdpump.dll会自动找到机器中的SQL Server 2005 Analysis实例，其实在C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\isapi 目录下有一个叫msmdpump.ini的配置文件，它就是通过这个配置文件定位的，内容如下：<br /> &lt;ConfigurationSettings&gt;<br />  &lt;ServerName&gt;localhost&lt;/ServerName&gt;<br />  &lt;SessionTimeout&gt;3600&lt;/SessionTimeout&gt;<br />  &lt;ConnectionPoolSize&gt;100&lt;/ConnectionPoolSize&gt;<br /> &lt;/ConfigurationSettings&gt;<br /> <br />在这个配置文件中，ServerName除了可以为机器名、机器名\实例名外，还可以为URL地址，如&lt;servername&gt;http://***/***/msmdpump.dll&lt;/servername&gt;<br /></p></span>
												</font>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/92962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-01-10 16:56 <a href="http://www.blogjava.net/SIDNEY/archive/2007/01/10/92962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置HTTP访问SQL Server 2005 Analysis服务器</title><link>http://www.blogjava.net/SIDNEY/archive/2007/01/10/92961.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 10 Jan 2007 08:56:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/01/10/92961.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/92961.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/01/10/92961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/92961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/92961.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="575" border="0">
				<tbody>
						<tr>
								<th class="f24">
								</th>
						</tr>
						<tr>
								<td>
										<p align="center"> </p>
								</td>
						</tr>
						<tr>
								<td>
								</td>
						</tr>
						<tr>
								<td class="title_side" align="middle" height="20">
								</td>
						</tr>
				</tbody>
		</table>
		<div id="article">
				<table cellspacing="0" cellpadding="0" width="575" border="0">
						<tbody>
								<tr>
										<td height="3">
										</td>
								</tr>
								<tr>
										<td valign="bottom" align="right"> <font color="#ff0000"><a href="http://www.qqread.com/keywords/win2003.html">win2003</a>  <a href="http://www.qqread.com/keywords/sqlserver.html">sql server</a>  <a href="http://www.qqread.com/keywords/os.html">os</a>   </font></td>
								</tr>
								<tr>
										<td class="height170">
												<font class="f14" id="zoom">
														<span id="text999">
																<br />　　其HTTP访问机制和SQL2000 Analysis 的一样，通过在IIS中增加应用程序映射（ISAPI扩展）来实现对Analysis服务器的访问 
<p>具体步骤如下：<br /> 我的机器环境WIN2003+IIS <a href="http://www.qqread.com/keywords/sqlserver.html" target="_blank">SQL Server</a> 2005 BETA3</p><p>1、确定msmdpump.dll文件所在SQLSERVER2005目录的位置，当前它处于下面目录中<br /> C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\isapi <br />2、建立一虚拟目录指向该目录 ，如下<br /> 2。1建立一个 OLAP 的虚拟目录<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图一）" src="http://www.qqread.com/ArtImage/20060521/jg35_1.jpg" border="0" /></p><p align="center"><span id="ad_qqread_mid_big"><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&amp;dt=1168419115274&amp;lmt=1157009297&amp;alternate_ad_url=http%3A%2F%2Fwww.qqread.com%2F0000js%2Fgoogle336.htm&amp;prev_fmts=468x15_0ads_al_s&amp;format=336x280_as&amp;output=html&amp;channel=6686853775&amp;url=http%3A%2F%2Fwww.qqread.com%2Fsqlserver%2F2006%2F05%2Fp357112052.html&amp;color_bg=EDF0F5&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=EDF0F5&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dsql%25202005%2520http%2520olap%26hl%3Dzh-CN%26lr%3D%26nxpt%3D10.804570955182005319093&amp;cc=24&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency=""></iframe></span></p><br /> 2。2使该虚拟目录指向C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\isapi 目录<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图二）" src="http://www.qqread.com/ArtImage/20060521/jg35_2.jpg" border="0" /><br /> 2。3使该虚拟目录具有执行权限<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图三）" src="http://www.qqread.com/ArtImage/20060521/jg35_3.jpg" border="0" /><br />3、为OLAP虚拟目录增加应用程序映射，把.DLL请求转为 msmdpump.dll处理，如图<br /> <img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图四）" src="http://www.qqread.com/ArtImage/20060521/jg35_4.jpg" border="0" /><br />好了，配置基本完成了，现在你可以启动SQL Server Management Studio应用程序通过地址 http://crserver/olap/msmdpump.dll连接到 SQL Server 2005 Analysis,如图<br /> <a href="http://www.qqread.com/ArtImage/20060521/jg35_5.jpg" target="_blank"><img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图五）" src="http://www.qqread.com/ArtImage/20060521/jg35_5.jpg" border="0" /></a><br /> <a href="http://www.qqread.com/ArtImage/20060521/jg35_6.jpg" target="_blank"><img alt="配置HTTP访问SQL Server 2005 Analysis服务器（图六）" src="http://www.qqread.com/ArtImage/20060521/jg35_6.jpg" border="0" /></a><p></p><p>你也许会奇怪为什么http://crserver/olap/msmdpump.dll会自动找到机器中的SQL Server 2005 Analysis实例，其实在C:\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\bin\isapi 目录下有一个叫msmdpump.ini的配置文件，它就是通过这个配置文件定位的，内容如下：<br /> &lt;ConfigurationSettings&gt;<br />  &lt;ServerName&gt;localhost&lt;/ServerName&gt;<br />  &lt;SessionTimeout&gt;3600&lt;/SessionTimeout&gt;<br />  &lt;ConnectionPoolSize&gt;100&lt;/ConnectionPoolSize&gt;<br /> &lt;/ConfigurationSettings&gt;<br /> <br />在这个配置文件中，ServerName除了可以为机器名、机器名\实例名外，还可以为URL地址，如&lt;servername&gt;http://***/***/msmdpump.dll&lt;/servername&gt;<br /></p></span>
												</font>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/92961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-01-10 16:56 <a href="http://www.blogjava.net/SIDNEY/archive/2007/01/10/92961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何删除WINDOWS服务</title><link>http://www.blogjava.net/SIDNEY/archive/2007/01/03/91536.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Wed, 03 Jan 2007 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2007/01/03/91536.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/91536.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2007/01/03/91536.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/91536.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/91536.html</trackback:ping><description><![CDATA[sc delete 服务名称<img src ="http://www.blogjava.net/SIDNEY/aggbug/91536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2007-01-03 14:55 <a href="http://www.blogjava.net/SIDNEY/archive/2007/01/03/91536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c# send email componet</title><link>http://www.blogjava.net/SIDNEY/archive/2006/11/28/84058.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Tue, 28 Nov 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2006/11/28/84058.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/84058.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2006/11/28/84058.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/84058.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/84058.html</trackback:ping><description><![CDATA[
		<p>/*</p>
		<p> * Copyright 2003-2004, Axosoft, LLC</p>
		<p> * You are free to distribute this code royalty-free as you wish, however, we only ask</p>
		<p> * that you leave this copyright notice at the top of the source file giving Axosoft </p>
		<p> * credit for this source code.  If you find any bugs or want to contribute your</p>
		<p> * enhancements, please send them to <a href="mailto:support@axosoft.com">support@axosoft.com</a>.</p>
		<p> * </p>
		<p> * Visit Axosoft at <a href="http://www.axosoft.com">http://www.axosoft.com</a></p>
		<p> */</p>
		<p> </p>
		<p>using System;</p>
		<p>using System.Collections;</p>
		<p>using System.Net;</p>
		<p>using System.Net.Sockets;</p>
		<p>using System.Text;</p>
		<p> </p>
		<p>namespace WindowsApplication1</p>
		<p>{</p>
		<p> public class SmtpException : ApplicationException</p>
		<p> {</p>
		<p>  public SmtpException(string message) : base(message)</p>
		<p>  {</p>
		<p>  }</p>
		<p> }</p>
		<p> </p>
		<p> /// </p>
		<p> /// Indicates the type of message to be sent</p>
		<p> /// </p>
		<p> public enum MessageType</p>
		<p> {</p>
		<p>  /// </p>
		<p>  /// The message is plain text</p>
		<p>  /// </p>
		<p>  Text = 0,</p>
		<p>  /// </p>
		<p>  /// The message is HTML</p>
		<p>  /// </p>
		<p>  HTML = 1</p>
		<p> }</p>
		<p> </p>
		<p> /// </p>
		<p> /// A mail message that can be sent using the Smtp class</p>
		<p> /// </p>
		<p> public class MailMessages</p>
		<p> {</p>
		<p>  private string _emailFrom = "";</p>
		<p>  public string EmailFrom</p>
		<p>  {</p>
		<p>   get { return _emailFrom; }</p>
		<p>   set { _emailFrom = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  private string _emailSubject = "";</p>
		<p>  public string EmailSubject</p>
		<p>  {</p>
		<p>   get { return _emailSubject; }</p>
		<p>   set { _emailSubject = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  private ArrayList _emailTo = null;</p>
		<p>  public ArrayList EmailTo</p>
		<p>  {</p>
		<p>   get { return _emailTo; }</p>
		<p>  }</p>
		<p>  public void AddEmailTo(string email)</p>
		<p>  {</p>
		<p>   if(_emailTo == null)</p>
		<p>    _emailTo = new ArrayList();</p>
		<p>   _emailTo.Add(email);</p>
		<p>  }</p>
		<p> </p>
		<p>  private string _emailMessage = "";</p>
		<p>  public string EmailMessage</p>
		<p>  {</p>
		<p>   get { return _emailMessage; }</p>
		<p>   set { _emailMessage = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  private MessageType _emailMessageType = MessageType.Text;</p>
		<p>  public MessageType EmailMessageType</p>
		<p>  {</p>
		<p>   get { return _emailMessageType; }</p>
		<p>   set { _emailMessageType = value; }</p>
		<p>  }</p>
		<p> }</p>
		<p> </p>
		<p> /// </p>
		<p> /// This class allows sending of e-mails through Smtp</p>
		<p> /// For help on SMTP, look up <a href="http://www.faqs.org/rfcs/rfc821.html">http://www.faqs.org/rfcs/rfc821.html</a></p>
		<p> /// </p>
		<p> public class Smtp</p>
		<p> {</p>
		<p>  #region Class properties</p>
		<p>  private string _serverSmtp = "";</p>
		<p>  public string SmtpServer</p>
		<p>  {</p>
		<p>   get { return _serverSmtp; }</p>
		<p>   set { _serverSmtp = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  private int _portSmtp = 25;</p>
		<p>  public int SmtpPort</p>
		<p>  {</p>
		<p>   get { return _portSmtp; }</p>
		<p>   set { _portSmtp = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  private string _userSmtp = "";</p>
		<p>  public string SmtpUser</p>
		<p>  {</p>
		<p>   get { return _userSmtp; }</p>
		<p>   set { _userSmtp = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  private string _passwordSmtp = "";</p>
		<p>  public string SmtpPassword</p>
		<p>  {</p>
		<p>   get { return _passwordSmtp; }</p>
		<p>   set { _passwordSmtp = value; }</p>
		<p>  }</p>
		<p> </p>
		<p>  #endregion</p>
		<p> </p>
		<p>  public Smtp()</p>
		<p>  {</p>
		<p>  }</p>
		<p> </p>
		<p>  #region Public methods</p>
		<p>  /// </p>
		<p>  /// Sends the e-mail based on the properties set for this object</p>
		<p>  /// </p>
		<p>  public void SendEmail(MailMessages msg)</p>
		<p>  {</p>
		<p>   int code;</p>
		<p> </p>
		<p>   if(_serverSmtp == "" || msg.EmailFrom == "" || msg.EmailSubject == "" || msg.EmailTo == null)</p>
		<p>   {</p>
		<p>    throw new SmtpException("Invalid Smtp or email parameters.");</p>
		<p>   }</p>
		<p> </p>
		<p>   // open a connection to the Smtp server</p>
		<p>   using(TcpClient smtpSocket = new TcpClient(_serverSmtp, _portSmtp)) </p>
		<p>   using(NetworkStream ns = smtpSocket.GetStream())</p>
		<p>   {</p>
		<p>    // get response from Smtp server</p>
		<p>    code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>    if(code != 220)</p>
		<p>    {</p>
		<p>     throw new SmtpException("Error connecting to Smtp server. (" + code.ToString() + ")");</p>
		<p>    }</p>
		<p> </p>
		<p>    // EHLO</p>
		<p>    WriteBuffer(ns, "ehlo\r\n");</p>
		<p>    // get response from Smtp server</p>
		<p>    string buffer = ReadBuffer(ns);</p>
		<p>    code = GetSmtpResponse(buffer);</p>
		<p>    if(code != 250)</p>
		<p>    {</p>
		<p>     throw new SmtpException("Error initiating communication with Smtp server. (" + code.ToString() + ")");</p>
		<p>    }</p>
		<p>    // check for AUTH LOGIN</p>
		<p>    if(buffer.IndexOf("AUTH LOGIN") &gt;= 0)</p>
		<p>    {</p>
		<p>     // AUTH LOGIN</p>
		<p>     WriteBuffer(ns, "auth login\r\n");</p>
		<p>     // get response from Smtp server</p>
		<p>     code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>     if(code != 334)</p>
		<p>     {</p>
		<p>      //throw new SmtpException("Error initiating Auth=Login. (" + code.ToString() + ")");</p>
		<p>     }</p>
		<p> </p>
		<p>     // username:</p>
		<p>     WriteBuffer(ns, System.Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(_userSmtp)) + "\r\n");</p>
		<p>     // get response from Smtp server</p>
		<p>     code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>     if(code != 334)</p>
		<p>     {</p>
		<p>      //throw new SmtpException("Error setting Auth user name. (" + code.ToString() + ")");</p>
		<p>     }</p>
		<p> </p>
		<p>     // password:</p>
		<p>     WriteBuffer(ns, System.Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(_passwordSmtp)) + "\r\n");</p>
		<p>     // get response from Smtp server</p>
		<p>     code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>     if(code != 235)</p>
		<p>     {</p>
		<p>      //throw new SmtpException("Error setting Auth password. (" + code.ToString() + ")");</p>
		<p>     }</p>
		<p>    }<br />    </p>
		<p> </p>
		<p>    // MAIL FROM:</p>
		<p>    WriteBuffer(ns, "mail from: &lt;" + msg.EmailFrom + "&gt;\r\n");</p>
		<p>    // get response from Smtp server</p>
		<p>    code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>    if(code != 250)</p>
		<p>    {</p>
		<p>     throw new SmtpException("Error setting sender email address. (" + code.ToString() + ")");</p>
		<p>    }</p>
		<p> </p>
		<p>    // RCPT TO:</p>
		<p>    foreach(string sEmailTo in msg.EmailTo)</p>
		<p>    {</p>
		<p>     WriteBuffer(ns, "rcpt to:&lt;" + sEmailTo + "&gt;\r\n");</p>
		<p>     // get response from Smtp server</p>
		<p>     code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>     if(code != 250 &amp;&amp; code != 251)</p>
		<p>     {</p>
		<p>      throw new SmtpException("Error setting receipient email address. (" + code.ToString() + ")");</p>
		<p>     }</p>
		<p>    }</p>
		<p> </p>
		<p>    // DATA</p>
		<p>    WriteBuffer(ns, "data\r\n");</p>
		<p>    // get response from Smtp server</p>
		<p>    code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>    if(code != 354)</p>
		<p>    {</p>
		<p>     throw new SmtpException("Error starting email body. (" + code.ToString() + ")");</p>
		<p>    }</p>
		<p> </p>
		<p>    // Repeat the from and to addresses in the data section</p>
		<p>    WriteBuffer(ns, "from:&lt;" + msg.EmailFrom + "&gt;\r\n");</p>
		<p>    foreach(string sEmailTo in msg.EmailTo)</p>
		<p>    {</p>
		<p>     WriteBuffer(ns, "to:&lt;" + sEmailTo + "&gt;\r\n");</p>
		<p>    }</p>
		<p>    WriteBuffer(ns, "Subject:" + msg.EmailSubject + "\r\n");</p>
		<p>    switch(msg.EmailMessageType)</p>
		<p>    {</p>
		<p>     case MessageType.Text:</p>
		<p>      // send text message</p>
		<p>      WriteBuffer(ns, "\r\n" + msg.EmailMessage + "\r\n.\r\n");</p>
		<p>      break;</p>
		<p> </p>
		<p>     case MessageType.HTML:</p>
		<p>      // send HTML message</p>
		<p>      //WriteBuffer(ns, "MIME-Version: 1.0\r\n");</p>
		<p>      //WriteBuffer(ns, "Content-type: text/html;charset=GB2312\r\n");</p>
		<p>      //WriteBuffer(ns, "Content-type: text/plain; charset=gb18030\r\n");</p>
		<p>      //Content-Type: text/plain; charset=ISO-8859-1<br />      //Content-transfer-encoding: base64<br />      //WriteBuffer(ns, "Content-transfer-encoding: base64\r\n");<br />         WriteBuffer(ns, "\r\n" + msg.EmailMessage + "\r\n.\r\n");</p>
		<p>      break;</p>
		<p>    }</p>
		<p>    // get response from Smtp server</p>
		<p>    code = GetSmtpResponse(ReadBuffer(ns));</p>
		<p>    if(code != 250)</p>
		<p>    {</p>
		<p>     throw new SmtpException("Error setting email body. (" + code.ToString() + ")");</p>
		<p>    }</p>
		<p> </p>
		<p>    // QUIT</p>
		<p>    WriteBuffer(ns, "quit\r\n");</p>
		<p>   }</p>
		<p>  }</p>
		<p>  #endregion</p>
		<p> </p>
		<p>  #region Private methods</p>
		<p>  /// </p>
		<p>  /// Looks for an Smtp response code inside a repsonse string</p>
		<p>  /// </p>
		<p>  /// The response string to be searched</p>
		<p>  /// The int value of the Smtp reponse code</p>
		<p>  private int GetSmtpResponse(string sResponse)</p>
		<p>  {</p>
		<p>   int response = 0;</p>
		<p>   int iSpace = sResponse.IndexOf(" ");</p>
		<p>   int iDash = sResponse.IndexOf("-");</p>
		<p>   if(iDash &gt; 0 &amp;&amp; iDash &lt; iSpace)</p>
		<p>    iSpace = sResponse.IndexOf("-");</p>
		<p> </p>
		<p>   try</p>
		<p>   {</p>
		<p>    if(iSpace &gt; 0) </p>
		<p>     response = int.Parse(sResponse.Substring(0, iSpace));</p>
		<p>   }</p>
		<p>   catch(Exception)</p>
		<p>   {</p>
		<p>    // error - ignore it</p>
		<p>   }</p>
		<p> </p>
		<p>   return response;</p>
		<p>  }</p>
		<p> </p>
		<p>  /// </p>
		<p>  /// Write a string to the network stream</p>
		<p>  /// </p>
		<p>  /// The network stream on which to write</p>
		<p>  /// The string to write to the stream</p>
		<p>  private void WriteBuffer(NetworkStream ns, string sBuffer)</p>
		<p>  {</p>
		<p>   try</p>
		<p>   {</p>
		<p>    byte[] buffer = Encoding.ASCII.GetBytes(sBuffer);</p>
		<p>    ns.Write(buffer, 0, buffer.Length);</p>
		<p>   }</p>
		<p>   catch(System.IO.IOException)</p>
		<p>   {</p>
		<p>    // error writing to stream</p>
		<p>    throw new SmtpException("Error sending data to Smtp server.");</p>
		<p>   }</p>
		<p>  }</p>
		<p> </p>
		<p>  /// </p>
		<p>  /// Reads a response from the network stream</p>
		<p>  /// </p>
		<p>  /// The network stream from which to read</p>
		<p>  /// A string representing the reponse read</p>
		<p>  private string ReadBuffer(NetworkStream ns)</p>
		<p>  {</p>
		<p>   byte[] buffer = new byte[1024];</p>
		<p>   int i=0;</p>
		<p>   int b;</p>
		<p>   int timeout = System.Environment.TickCount;</p>
		<p> </p>
		<p>   try</p>
		<p>   {</p>
		<p>    // wait for data to show up on the stream</p>
		<p>    while(!ns.DataAvailable &amp;&amp; ((System.Environment.TickCount - timeout) &lt; 20000))</p>
		<p>    {</p>
		<p>     System.Threading.Thread.Sleep(100);</p>
		<p>    }</p>
		<p>    if(!ns.DataAvailable)</p>
		<p>     throw new SmtpException("No response received from Smtp server.");</p>
		<p> </p>
		<p>    // read while there's data on the stream</p>
		<p>    while(i &lt; buffer.Length &amp;&amp; ns.DataAvailable)</p>
		<p>    {</p>
		<p>     b = ns.ReadByte();</p>
		<p>     buffer[i++] = (byte)b;</p>
		<p>    }</p>
		<p>   }</p>
		<p>   catch(System.IO.IOException)</p>
		<p>   {</p>
		<p>    // error reading from stream</p>
		<p>    throw new SmtpException("Error receiving data from Smtp server.");</p>
		<p>   }</p>
		<p> </p>
		<p>   return Encoding.ASCII.GetString(buffer);</p>
		<p>  }</p>
		<p>  #endregion</p>
		<p> }</p>
		<p>}</p>
		<p> </p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/84058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2006-11-28 15:13 <a href="http://www.blogjava.net/SIDNEY/archive/2006/11/28/84058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Thead</title><link>http://www.blogjava.net/SIDNEY/archive/2006/11/27/83900.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Mon, 27 Nov 2006 14:24:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2006/11/27/83900.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/83900.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2006/11/27/83900.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/83900.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/83900.html</trackback:ping><description><![CDATA[1.每个窗体都有自己的都在不同的线程上运行，如果需要在窗体之间交互，就需要在线程之间交互。<br /><br />2.当线程Sleep时，系统就退出执行队列一段时间，当睡眠结束时，系统会产生一个时钟中断，从而<br />使线程回到执行队列中，从而恢复线程的执行。<br /><br />3.如果父线程先于子线程结束，那么子线程将在父线程结束的同时被迫结束。Thread.Join()方法使父线程等待，直到子线程结束。<br />Abort()方法带来的后果是不可恢复的终止线程。<br /><br />4.起始线程可以称之为主线程，如果所有的前台线程都停止了，那么主线程可以终止，而所有的后台线程都将无条件终止。<br />后台线程跟前台线程只有一个区别，那就是后台线程不妨碍程序的终止。一旦一个进程所有的前台线程都终止后，CLR<br />将通过调用任意一个存活中的后台进程的Abort()方法来彻底终止进程。<br /><br />6.挂起，睡眠（都可称为－－阻塞，暂停）<br />与Thread.Sleep 不同，Thread.Suspend 不会使线程立即停止执行。直到线程到达安全点之后它才可以将该线程挂起。如果线程尚<br />未启动或已经停止，则它将不能挂起。调用 Thread.Resume 将使另一个线程跳出挂起状态并使该线程继续执行。<br />一个线程不能对另一个线程调用Sleep ，但是一个线程可以对另一个线程调用Suspend。<br />还可以使用许多其它的方式来阻塞线程。例如，可以通过调用 Thread.Join 使一个线程等待另一个线程（子线程）停止。使用<br />Monitor.Wait使一个线程等待访问一个同步对象。<br /><br />5.关键字lock可以把一段代码定义为互斥段（critical section），互斥段在一个时刻内只允许一个线程进入执行，而其他线程必须等待。<br />多线程公用一个对象时，就不应该使用lock关键字了，这里Monitor，Monitor提供了使线程共享资源的方案。 <br />Monitor类可以锁定一个对象，一个线程只有得到这把锁才可以对该对象进行操作。<br />如：<br />Monitor.Enter(obj); <br />//现在oQueue对象只能被当前线程操纵了 <br />Monitor.Exit(obj);<br /><br />6.一个进程开始时至少会有一个主线程 ( 即主执行实例 ) ，这是在系统加载你的程序的时候所创建的主执行流程。<br />而消息队列则是与线程 ( Thread ) 相关的，在似win2k上一个线程有一个且只有一个消息队列 ( queue ) 与之相对应。<br />消息队列是在什么时候生成的呢？ 在似win2k系统上，从一开始创建线程就已经有了。<br />一个线程可以创建多个窗体。统发送给这些窗口的消息都统一发送到同一个 消息队列 中，幸亏消息结构中有msg.hwnd指出该条消息与<br />哪一个窗口相关， DispatchMessage() 函数就是依照这个保证消息分派处理自动化而且不会出错！<br /><br />7.每个窗体都属于创建它的线程，在一线程中直接访或间接问其它线程中的窗体的方法将导致运行时错误（VS2005）。<br />解决方法：使用窗体从Control继承而来的Control.Invoke（Delegate）方法。该方法将在创建窗体的线程上执行委托指向的方法。<br />注意：在VS2003下，可以在一个线程中直接或间接调用另一个线程中的窗体的方法，而不会导致运行时错误。<br /><img src ="http://www.blogjava.net/SIDNEY/aggbug/83900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2006-11-27 22:24 <a href="http://www.blogjava.net/SIDNEY/archive/2006/11/27/83900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不该错的问题:IsPostBack in ASP.NET, Programming with DataGrid     选择自 dingsea 的 Blog </title><link>http://www.blogjava.net/SIDNEY/archive/2006/08/17/64132.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Thu, 17 Aug 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2006/08/17/64132.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/64132.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2006/08/17/64132.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/64132.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/64132.html</trackback:ping><description><![CDATA[
		<p>唉,现在才发现,原来在ASP.NET中IsPostBack属性是多么的重要......<br /><br />一般是在page_load中检查是否是第一次加载本页或是判断是否是用户提交(PostBack)<br />if (!IsPostBack) {<br />//do something<br />}<br />在用DataGrid访问和更新数据库时没有注意到这个问题,会出现各种各样的奇怪问题,比如我的这种.<br /><br />问题描述:<br />        用DataGrid访问和更新数据库(SQL Server --Northwind --table name:categories --Query :select categoryID,categoryName,Description form categories ),除了更新操作以外,其它功能OK.对DataGrid进行如下操作:点击“编辑”，相应的行数据变为可编辑，同时编辑按钮被“更新”和“取消”代替。对数据进行编辑，如把Description中的AAA改为BBB。再点“更新”按钮。本意是想用此方法将修改后的数据（BBB）代替数据库中原有的AAA，当然是用Update方法了。但在点“更新”后，数据没有改变，我做过测试，UPDATE方法是有效的，也就是说，UPDATE方法更新的不是新数据，而是没有修改前的旧数据，造成数据没有更新（实际上是更新了）。要注意的是我的Page_Load事件如下<br /><font color="#0000ff">private void</font> Page_Load(<font color="#0000ff">object</font> sender, System.EventArgs e)<br />  {<br />   <font color="#33cc33">// 在此处放置用户代码以初始化页面</font><br />   OleAd.Fill(ds);//OleAd--oledbAdapter<br />   dg.DataBind();//dg--DataGrid<br />  }<br /><br />分析问题（个人推测，请指正）：<br />        由于没有用IsPostBack判断是否是第一次加载此页面，所以不管什么情况下只要有PostBack，都会对dg(DataGrid)进行数据绑定。所以在进行任何的sumbit后，dg都会去数据库绑定数据而不理会页面中的数据。<br />        当对选中的数据进行修改完毕后，在点“更新”时,提交此页面修改的数据，而马上遇到Page_Load事件，不等对修改数据进行处理，服务器就先生成原页面（MS用这种方法提高速度？），发现dg.DataBind()，执行之，于是放弃数据库更新，于是看不到更新结果了。<br /><br />解决问题：<br />        解决倒是很简单，Page_Load事件中加上对IsPostBack的判断就可以了。<br /><font color="#0000ff">private void</font> Page_Load(<font color="#0000ff">object</font> sender, System.EventArgs e)<br />  {<br />   <font color="#33cc33">// 在此处放置用户代码以初始化页面</font><br />   OleAd.Fill(ds);//OleAd--oledbAdapter<br />    <font color="#0000ff">if</font><font color="#000000">(!IsPostBack)<br />{<br /></font>   dg.DataBind();//dg--DataGrid<br />}<br />  }</p>
<img src ="http://www.blogjava.net/SIDNEY/aggbug/64132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2006-08-17 15:13 <a href="http://www.blogjava.net/SIDNEY/archive/2006/08/17/64132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>visual studio.net已检测到指定的web服务器运行的不是asp.net1.1版。无法运行asp.net web应用程序</title><link>http://www.blogjava.net/SIDNEY/archive/2006/07/25/59918.html</link><dc:creator>渠上月</dc:creator><author>渠上月</author><pubDate>Tue, 25 Jul 2006 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/SIDNEY/archive/2006/07/25/59918.html</guid><wfw:comment>http://www.blogjava.net/SIDNEY/comments/59918.html</wfw:comment><comments>http://www.blogjava.net/SIDNEY/archive/2006/07/25/59918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/SIDNEY/comments/commentRss/59918.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/SIDNEY/services/trackbacks/59918.html</trackback:ping><description><![CDATA[在使用visual studio.net过程中，已经有几次遇到“visual studio.net已检测到指定的web服务器运行的不是asp.net1.1版。无法运行asp.net web应用程序 ”这样的问题，很是恼火，害得我重新安装。NET多次，经过一再研究，找到解决这个问题的根本办法：<br /><br />1.你的Web服务器使用了固定IP：确定你的“Internet信息服务”中使用的是“默认web站点”并且其属性中的IP地址为“（全部未分配）”，而不是你己指定的ip地址。然后在回到VS.NET中重试，或许可以解决。 <br />2.以上方法不能解决问题时，考虑MSDN中的解决办法，如下： <br />Visual Studio .NET 无法确定在 Web 服务器计算机上运行的是否为 ASP.NET 1.1 版。该错误可能在几种不同情况下发生。请检查是否属于以下情况： <br />• 确保 .NET Framework 1.1 版安装在 Web 服务器计算机上。有关详细信息，请参见 Visual Studio .NET 软件要求。 <br />• 如果 ASP.NET 已安装在 Web 服务器计算机上，但仍然遇到此错误，则可能是配置问题。为了纠正有问题的安装或配置，可以使用名为 aspnet_regiis 的 ASP.NET 实用工具。在类似如下所示的路径中可以找到此命令行实用工具： <br />C:\WINDOWS\Microsoft.NET\Framework\v1.1.nnnn\ <br />其中 nnnn 表示四位内部版本号。在最高版本号下查找。使用 /i 开关运行该实用工具： <br />aspnet_regiis /i <br />提示   您可以从命令的正确目录中直接打开该命令窗口。从 Windows 的“开始”菜单，指向“程序”、“Visual Studio .NET 2003”、“Visual Studio .NET 工具”，然后选择“Visual Studio .NET 命令提示”。在窗口打开后，键入 aspnet_regiis /i。<br /><img src ="http://www.blogjava.net/SIDNEY/aggbug/59918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/SIDNEY/" target="_blank">渠上月</a> 2006-07-25 09:33 <a href="http://www.blogjava.net/SIDNEY/archive/2006/07/25/59918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>