# Tuesday, October 11, 2005
这是一个很好的分页存储过程的解决方案,向大家推荐。
posted on Tuesday, October 11, 2005 7:54:53 PM (China Standard Time, UTC+08:00)  #    Comments [3]
# Tuesday, August 30, 2005

    有时候,我们在调试ASP.net程序的时候,会很痛苦的碰到。某某组件访问被拒绝。这时候重起IIS,电脑注销都不起作用。

其中最常见的原因是Indexing service服务引起的。解决方法就是停用Indexing service,或配置ASP.net 的临时目录不受Indexing service服务的影响。

配置ASP.net 的临时目录不受Indexing service服务的影响的步骤如下:

1、开始 -- 管理工具 -- 计算机管理(Win2003的位置,其他操作系统类似)打开计算机管理
2、展开计算机管理左边树中“服务和应用程序”节点,再在其下展开“索引服务”节点,再在其下展开“System”节点,再在其下展开“目录”节点。
3、在计算机管理的右边我们可以看到配置的索引服务目录。
4、在“目录”节点上右击鼠标,选择“新建”--“目录”
5、在“添加目录”对话框中,路经输入框中输入 ASP.net 的临时文件目录。默认应该是:
c:\<WINDIR>\Microsoft.NET\Framework\<Version Number>\Temporary ASP.NET Files  目录。
<Version Number> 指你要处理的.net版本。
6、在“包含在索引中吗?”选项中,选择“否”
7、单击“确定”按钮
8、在“索引服务”节点上右键单击,重起索引服务即可。

参考以下文档:
http://community.csdn.net/Expert/topic/4075/4075120.xml
http://support.microsoft.com/default.aspx?scid=kb;en-us;329065

posted on Tuesday, August 30, 2005 11:57:27 AM (China Standard Time, UTC+08:00)  #    Comments [1]
# Thursday, August 25, 2005
在实际开发Asp.Net项目时,程序可能会出现一些异常,那么我们应该怎么去获得尽量多的系统异常,以便后期维护过程能够尽可能重现异常,及时分析、发现和修复Bug。为了处理这个问题,我写了一个小程序来帮助实现我的需求。
posted on Thursday, August 25, 2005 2:40:44 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Friday, August 19, 2005

 在数据库应用的设计中,我们往往会需要获取某些表的记录总数,用于判断表的记录总数是否过大,是否需要备份数据等。我们通常的做法是:select count(*) as c from tableA 。然而对于记录数巨大的表,上述做法将会非常耗时。在DELL 4400 服务器上做试验,MS Sqlserver 2000 数据库对于100万记录的简单数据表执行上述语句,时间在1分钟以上。如果在表的某个字段上做聚簇索引,第一次执行该语句的时间和没有索引的时间差不多,之后执行上述语句,速度很快,在1秒中以内,但当表的记录数发生较大变化后,再执行该语句又会经历一次耗时的过程。而且不是每个表都适合做聚簇索引的,对于数量巨大的表,如果需要经常增删操作,建聚簇索引是一个很不明智的做法,将会极大的影响增删的速度。那么有没有一个比较简单的方法快速获取表的记录总数呢?答案是有的。
 在MS SQL 数据库中每个表都在sysindexes 系统表中拥有至少一条记录,该记录中的rows 字段会定时记录表的记录总数。下面是sysindexes 表的相关记录的含义:

列名      数据类型             描述
id            int                        表ID(如果 indid = 0 或255)。否则为索引所属表的ID
Indid       smallint                索引ID:
                                         0=表
                                         1=聚簇索引
                                         >1=非聚簇索引
                                        255=具有text或image数据的表条目。
rows       int                       基于indid=0 和 indid=1地数据级行数,该值对于indid>1重 复。如果indid=255,rows设置为0。
  
  
当表没有聚簇索引时,Indid = 0 否则为 1。

那么现在大家应该知道如何获取表的记录总数了,只需执行如下语句:
select rows from sysindexes where id = object_id(tablename) and indid in (0,1)

该方法获取表的记录总数的速度非常快,在毫秒级就可以完成,相比select count(*) 要快上数万倍,但是大家在运用该方法是一定要主要,该方法得到的表的总记录数不是一个精确值,原因是MS SQL 并不是实时更新该字段的值,而是定时更新,当从实践来看该值和精确值一般误差不大,如果你希望快速的粗略估算表的大小,建议你采用该方法。如果你希望得到精确值,那么请在执行上述语句前执行DBCC UPDATEUSAGE(DatabaseName,[TABLENAME]) WITH ROW_COUNTS 强制更新该字段的值,但这样第一次更新时会耗费大量的时间,这样做的效果和建有聚簇索引的表 select count (*) 效果相差不大,所以如果你希望相对快速地得到精确的表的记录总数,那么你有两种选择,建聚簇索引或者先DBCC 再使用上述方法。

posted on Friday, August 19, 2005 10:56:31 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, August 18, 2005

/*
  经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:
  exec GetRecordFromPage news,newsid,10,100000
  news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。
*/

/*
  函数名称: GetRecordFromPage
  函数功能: 获取指定页的数据
  参数说明: @tblName      包含数据的表名
           @fldName      关键字段名
           @PageSize     每页记录数
           @PageIndex    要获取的页码
           @OrderType    排序类型, 0 - 升序, 1 - 降序
           @strWhere     查询条件 (注意: 不要加 where)
  作  者: 铁拳
  邮  箱:
sunjianhua_kki@sina.com
  创建时间: 2004-07-04
  修改时间: 2004-07-04
*/
CREATE PROCEDURE GetRecordFromPage
    @tblName      varchar(255),       
-- 表名
    @fldName      varchar(255),       -- 字段名
    @PageSize     int = 10,          
-- 页尺寸
    @PageIndex    int = 1,           
-- 页码
    @OrderType    bit = 0,           
-- 设置排序类型, 非 0 值则降序
    @strWhere     varchar(2000) = ''  
-- 查询条件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主语句
declare @strTmp   varchar(1000)       -- 临时变量
declare @strOrder varchar(500)        -- 排序类型

if @OrderType != 0
begin
    set @strTmp = '<(select min'
    set @strOrder = ' order by [' + @fldName + '] desc'
end
else
begin

    set @strTmp = '>(select max'
    set @strOrder = ' order by [' + @fldName +'] asc'
end

set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
    + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
    + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
    + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
    + @strOrder

if @strWhere != ''
    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
        + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
        + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
        + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1
begin
    set @strTmp = ''
    if @strWhere != ''
        set @strTmp = ' where (' + @strWhere + ')'

    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + ']' + @strTmp + ' ' + @strOrder
end

exec (@strSQL)

GO

posted on Thursday, August 18, 2005 9:26:54 AM (China Standard Time, UTC+08:00)  #    Comments [3]
在 web.config 的 <system.web> 节中添加以下代码:
 
<webServices>
  <protocols>
   <add name="HttpGet" />
   <add name="HttpPost" />
   <add name="HttpPostLocalhost" />
   <add name="Documentation" />
  </protocols>
</webServices>
posted on Thursday, August 18, 2005 9:24:10 AM (China Standard Time, UTC+08:00)  #    Comments [4]
# Saturday, July 30, 2005

Johnny Hughes的Blog上获悉可以从CVS上获得dasBlog 1.8版源码,于是尽早立即下载后将原码中的明显错误去除,将FreeTextBox升级为最新的3.0.5000.5版,然后修改了部分小错误。现将我修改后的带源码的已编译版本共享给大家。
点击这里下载(连接已失效)

posted on Saturday, July 30, 2005 12:23:50 PM (China Standard Time, UTC+08:00)  #    Comments [7]
# Thursday, July 28, 2005

    在博客园管理员dudu以及博客堂开心就好宝玉的支持和帮助下,烟台.NET 俱乐部也成立啦.
    希望烟台、威海及其周边地区.NET爱好者能积极的加入.
    希望加入此团队的博客园成员可以在本文的评论中回复或EmailTo : qihangnet(AT)hotmail.com。
    请说明你的Blog帐号和所在城市,特长/兴趣(最好详细点)。

    继北京,上海,广州,杭州,郑州,济南等城市成立后。我们烟台也要努力了。
    Let's Do Our Best!

烟台.Net俱乐部博客园团队Blog:http://www.cnblogs.com/team/dotsail.html
烟台.NET俱乐部官方网站:http://qihang.net
烟台.NET俱乐部QQ群:6718824
烟台.NET俱乐部博客园聊天室:http://chat.cnblogs.com/CuteSoft_Client/CuteChat/CH_MainForm.Aspx?ChannelId=45f4536b-39fc-44d5-af07-1715e7b2097e

posted on Thursday, July 28, 2005 9:31:12 PM (China Standard Time, UTC+08:00)  #    Comments [1]
# Monday, July 11, 2005

为了方便北京及周边地区广大程序员、编程爱好者和高校计算机爱好者更好的交流.Net技术,博客堂、博客园共同发起成立“北京.Net俱乐部”,她是一个非营利性质的、民间组织,旨在为北京及周边地区广大程序员、编程爱好者和高校计算机爱好者提供一个结交朋友、交流技术的平台,通过俱乐部组织的技术交流、会员聚会、培训讲座等系列活动,让俱乐部成员可以面对面的进行技术交流,帮助会员开阔视野、增进知识、积累资源,从而达到提升自我、增强竞争优势的目的。俱乐部将邀请北京地区的.Net技术专家和MVP等,成立专家组,为我们俱乐部的活动提供坚强的技术后盾。

俱乐部于2005年07月23日组织俱乐部的第一次活动,这次活动的主题是“Community Server 开发日”,首先,四位讲师(其中有两位微软资深讲师——开心就好、MVM,博客园——春鱼、博客堂——宝玉)将围绕Community Server(简称CS)这个开源项目对.Net技术的应用,从CS架构、控件、性能、ASP.NET 2.0从CS中吸取的特性几个方面进行讲解和分析,帮助您更好的理解学习.Net。讲课结束后会有讲师的答疑时间,然后将组织大家根据自己感兴趣的话题进行分组讨论交流,讨论结束后每组派代表发言。中间我们会有抽奖活动,会后参与者可选一起FB。本次活动时间、地点,讲课的题目/讲师简介/PPT等将于下周一公布。

此后我们每个月组织一次类似活动,欢迎大家一起加入到我们中来,对于俱乐部及活动有任何意见和建议请您反馈给我们。

场地支持:微软(中国)有限公司平台及开发技术部
加入方式:在您参加俱乐部活动时,即可报名加入俱乐部
俱乐部网站:http://www.cnblogs.com/team/BJDotNetClub.html
QQ群号码:12920817
负责人:
 宝玉(http://blog.joycode.com/dotey)
 dudu(http://dudu.cnblogs.com/)
 Bestcomy(http://bestcomy.cnblogs.com/)

posted on Monday, July 11, 2005 11:33:58 AM (China Standard Time, UTC+08:00)  #    Comments [1]