# Monday, October 24, 2005

测试一下DasBlog的异站同步提交功能……测试成功

测试一下DasBlog的异站同步修改功能……测试成功

以上测试是从我的个人网站同步到博客园上的测试。

一切OK,太高兴了,以后可以同步提交到我的多个博客站点了。:)

posted on Monday, October 24, 2005 11:17:55 AM (China Standard Time, UTC+08:00)  #    Comments [6]
# Tuesday, October 18, 2005

SqlServer的默认开放端口是1433,但是由于实际开发的需要端口被设置为非1433,一些开发人员不知如何写该类型的连接字符串了。
其实解决这个问题很简单的,只需在连接字符串的Data Source=myServer后面加上逗号和端口号就可以了。例如“……User ID=sa;Initial Catalog=pubs;Data Source=myServer,1200”,就是连接的1200端口的Sql Server服务器了。

具体的描述如下:
症状:
当您使用传输控制协议/Internet 协议 (TCP/IP) 以外的协议时,如果您指定 1433 以外的一个端口用以连接到 Microsoft SQL Server 的一个实例,则 SqlConnection.Open 会失败。
解决方案:
若要解决此问题,请使用 TCP/IP 协议,并使连接字符串中包括"Server=ComputerName, PortNumber"。

posted on Tuesday, October 18, 2005 9:12:51 PM (China Standard Time, UTC+08:00)  #    Comments [2]
# 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]