优化数据库前,可以问自己的10个问题

发布于:
Script

最近公司的数据库越来越大..打算优化一下性能..看到一篇资料摘录….优化钱..先搞搞基础咯…..

在优化数据库时,可能没有用到这些细节的优点。以下是10个关于数据库性能的问题,需要问问自己。

  1. 假设你的数据库不需要存储特殊字符的能力,尤其是Unicode标准中规定的那些字符,你有没有在系统中把nchar类型替换成char之类的各种适用的字段类型?

  2. 你是不是在用smalldatetime类型,而不是datetime?如果你不清楚这两种类型有什么区别,这是一个简单介绍:smalldatetime类型可以存储1900年1月1日至2079年6月6日的日期,而datetime类型把这一范围扩展到了1753年1月1日至9999年12月31日。你需要这么大的范围吗?

  3. 你是不是例行公事地使用bit类型来代替smallint类型?如果是这样,你知道其中的代价吗?这对你的程序可能并没有影响,但smallint类型可以建立索引,bit类型不行。

  4. SQL Server 2000在bit类型字段中允许空值,而且是默认的。有人希望这样,也有人不希望这样。

  5. 你如何处理字段中的空值?默认方式是允许空值,但更好的办法是禁止空值,允许零长度的字符串。

  6. 你想过表中能容纳的最多行数吗?你比较过这个数值和数据页的大小8060字节吗?

  7. 你有没有好好利用标准字段?(去看看菜单里的工具->选项->标准字段)

  8. 你的表中有没有一个时间戳字段?如果没有的话,你知道什么时候这种字段会有用处吗?

  9. 你的表都有区块索引吗?你知道一个表什么时候应该有区块索引,什么时候一文不值吗?

  10. 你在命名存储过程时有没有用sp_前缀?你有没有意识到这样做给性能带来了什么影响?

Windows Server 2003 6in1 简体中文版

发布于:
服务器技术

Windows 2003版本详解

1﹑EVL:Evaluation.评估版,指的是尚在测试、研发阶段的的Beta版。

2﹑STD:Standard.标准版,在Windows XP与Longhorn指的是尚未正式发行的的的先行版。

3﹑OEM:Original Equipment Manufacturer. 是给计算机生产厂商的版本。(即随机附赠版本)

4﹑RTL:Retail.零售版。

5﹑FPP:Full Packaged Product.(就是完整盒装零售版)

6﹑VOL:Volume Licensing for Organizations.大量采购授权合约(企业团体组织大量授权版)

终于搞定2003服务器时间格式问题 解决出现上下午的问题

发布于:
服务器技术

Asp的时间格式问题

困扰我一个多月的问题终于在昨天被解决了,其实问题很简单老是显示12小时制,总是出现上午、下午。这个问题虽然很小,但是有中文就无法将时间保存在数据库中。虽然可以修改代码,但是这个问题确实问了好多人都不知道因果。

虽然网上很多人都说在win2000区域中设置时间格式为24制,但是问题依旧。网上也搜索了好几天都发现没人能解决这个问题,终于我的一个朋友精通搜索微软msdn库,所以现在终于找到了解决方案。答案就是修改注册表就可以了。

1、控制面板--区域和语言选项--把时间设置为24小时格式。

2、打开注册表建立HKEY_LOCAL_MACHINESOFTWAREMicrosoftOLEAUT

VarConversionLocaleSetting = 2 (DWORD)

备注:OLEAUT 项可能不存在。如果它不存在,则必须先创建该项。

3、重新启动IIS。

哈哈,发现是不是困扰多时的问题解决了呢。

原理是强制使asp时间使用区域格式。

Windows 2003服务器安全配置终极技巧

发布于:
服务器技术

网上流传的很多关于windows server 2003系统的安全配置,但是仔细分析下发现很多都不全面,并且很多仍然配置的不够合理,并且有很大的安全隐患,今天我决定仔细做下极端BT的2003服务器的安全配置,让更多的网管朋友高枕无忧。

我们配置的服务器需要提供支持的组件如下:(ASP、ASPX、CGI、PHP、FSO、JMAIL、MySql、SMTP、POP3、FTP、3389终端服务、远程桌面Web连接管理服务等),这里前提是已经安装好了系统,IIS,包括FTP服务器,邮件服务器等,这些具体配置方法的就不再重复了,现在我们着重主要阐述下关于安全方面的配置。 

Windows服务器权限设置详解

发布于:
服务器技术

随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式攻击越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁、只让80端口对外开放的WEB服务器也逃不过被黑的命运。难道我们真的无能为力了吗?其实,只要你弄明白了NTFS系统下的权限设置问题,我们可以对crackers们说:NO!

要打造一台安全的WEB服务器,那么这台服务器就一定要使用NTFS和Windows NT/2000/2003。众所周知,Windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。DOS是个单任务、单用户的操作系统。但是我们能说DOS没有权限吗?不能!当我们打开一台装有DOS操作系统的计算机的时候,我们就拥有了这个操作系统的管理员权限,而且,这个权限无处不在。所以,我们只能说DOS不支持权限的设置,不能说它没有权限。随着人们安全意识的提高,权限设置随着NTFS的发布诞生了。

Asp存储过程使用

发布于:
Script

1、调用没有参数的存储过程

<%

set conn=server.CreateObject("adodb.connection")

set cmd=server.CreateObject("adodb.command")

strconn="dsn=pubs;uid=sa;pwd"

conn.Open strconn

set cmd.ActiveConnection=conn

cmd.CommandText="{call nono}"

”set rs=cmc.exe 或者cmd.execute

set rs=cmd.Execute()

%>

2、一个输入的参数的存储过程

<%

set conn=server.CreateObject("adodb.connection")

set cmd=server.CreateObject("adodb.command")

strconn="dsn=pubs;uid=sa;pwd"

conn.Open strconn

set cmd.ActiveConnection=conn

cmd.CommandText="{call oneinput(?)}"

cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )

cmd("@aaa")=100

cmd.Execute()

%> 

从Business.com遭封看302重定向

发布于:
Script

网站重定向成祸端

  Business.com是网上最大的商业搜索引擎和分类目录,以专业提供商业信息而享负盛名,包括近19万网页。若以“business”为关键词在Google中进行搜索,该网站名列第一。不过在9月5日,Business.com遇到一件蹊跷之事:它的首页由PR8变成了PR0, 而且Google搜索结果中找不到首页。好在被“蒸发”的只是首页,不过庆幸的是第二天首页又回到了Google的搜索结果,但PR仍旧为0。

  Business.com的问题出在它的重定向命令上。该网站让business.com跳转到www.business.com,这种重定向本该是永久性的。我们知道,301属于永久性重定向,而302则属于临时性重定向,只有当一个网站或网页在24到48小时之内临时移到其它位置的情况下才能使用该命令。但Business.com却错误地使用了“HTTP/1.1302 Object Moved”状态码。

  其实网站重定向极为普遍,譬如不满意原来的域名而申请了一个新域名;买下容易被人错拼的域名,防止客户因为拼错URL而找不到网站,等等。可是,很多人却会由于使用了错误的重定向状态码而遭“灭站之灾”,就象Business.com。尽管他们的重定向理由充分合理,然而若使用不当,则可能被Google误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。Business.com就是最好的前车之鉴。只不过大多数使用错误重定向参数的网站没Business.com这么幸运,一个小小的重定向就可能使网站前功尽弃,只能从头来过:重新申请新域名,重新发布新网站,等等。记住:Google绝不会同情任何人即使无心犯下的错误。 

网站重新定向再总结

发布于:
Script

ASP 3.0相对于ASP 2.0(就是IIS 4.0中的asp版本)并没有特别大的改动。
但是它也带来了一些很有特色的加强功能,让我们来看看这些新增的功能把:
Server.Transfer
这是一种从当前的asp页面控制另外一个asp页面的新的方法。
它可以用来替代Response.Redirect方法.
举例说明:
假设你想在执行了一些处理后将用户重新定位到另外一个新的URL.
如果是在AS 2.0中,你的执行过程是这样的,先执行你的处理过程然后使用
Response.Redirect将用户重新定位到url。使用这种方法的问题是Response.Redirect
太过于臃肿了 (就是执行效率太低下)- 因为这种方式是首先要给客户端的浏览器发送一个
消息,告诉浏览器现在需要重新定位到一个新的url了.然后浏览器在读取了这个
请求后,再给服务端返回一个信息,请求服务端把自己定位到那个url中去,最后
服务端才会处理这个新的请求并把html传递给客户端。
从上面的过程中可以看出,一个Response.Redirect导致了大量的网络通讯。
而Server.Transfer就是为了解决这个问题而出现的,它可以简单的理解为服务端的
url重新定位,也就是说,它是直接在服务端就可以重新定位url的,而不必和客户端进行
过多的通讯,从而能够避免加重网络通讯。
下面是一个简单的例子:
‘执行你所需要的处理过程

‘将用户重新定位到DoneProcessing.asp
Server.Transfer "/scripts/DoneProcessing.asp"
Server.Execute
? 这个Execute方法有点类似与上面介绍的Transfer方法,但不同的是,Execute方法
会在被调用的asp页面执行完成后将控制权交给调用被调用的asp页面。
呵呵,是不是有点糊涂呀,让例子来说明问题:
假设Page1.asp的代码如下:
Response.Write "Hello, "
Server.Execute "Page2.asp"
Response.Write "World!"
而Page2.asp代码如下:
Response.Write "Good morning!"
当通过浏览器浏览Page1.asp时,首先会输出 Hello 到客户端。
然后,将执行Page2.asp,结果是将 Good morning! 输出给客户端.
最后,控制权又回到Page1.asp离开的地方,结果是将 World! 输出给客户端。
最后客户端能够看到的结果为:
Hello, Good morning!World!??
对于这一切,客户端并不知道Page1.asp调用了Page2.asp,并且浏览器也没有
重新定位或则刷新,因为所有的这一切都是在服务端完成的。本文中将介绍ASP 3.0中的一个全新的内置对象ASPError对象.
ASPError Object
这个新增的,内置与ASP 3.0中的对象提供了一个以往版本中没有的
专门用来处理错误的对象,这样,我们来操纵错误就可以成为可能了。
以前你可以使用VBScript中的On Error Resume Next或则Jscript的try … Catch来捕获错误,
但是你不能够捕获到COM对象、或则内置的ASP对象中发生的错误
但是如果你要是使用了ASPError对象的话,那么一切都将有可能改变。

要使用这个对象,首先我们需要做的是在IIS中自定义HTTP错误信息(如何做我可是说了不下
10次了,呵呵。)。这样当与ASP相关的错误信息发生后,就会触发HTTP error 500;100。
然后在ASP脚本中可以通过访问ASPError对象来判断到底是发生了什么样的错误,
ASPError对象有一系列只读的属性获取最后一个错误的详细信息。
这个服务端的对象包含有一个新的方法GetLastError,必须使用它来获取发生的
错误信息。
现在还是让例子来说明问题把,假设用来处理错误的脚本文件为 CatchError.asp.
首先应该设置IIS的自定义错误信息中的HTTP 500;100均重新定位与CatchError.asp.
然后就是按照自己的方式来显示错误信息了,代码如下:following code:
<%
Dim objLastASPError
Set objLastASPError = Server.GetLastError
%>
捕获到一个错误:
 
错误描述: <%=objLastASPError.Description%>
 
错误类别: <%=objLastASPError.Category%>
 
错误文件: <%=objLastASPError.File%>
 
错误编号: <%=objLastASPError.Number%>
 
ASPError对象、Server.Transfer、Server.Execute是ASP 3.0中新增的
内容。当然还有其他一些小的改动。例如,在ASP 2.0中默认的Response.Buffer被设置为False.
而在ASP 3.0中Response.Buffer默认被设置为True.

XML与ASP简单结合实现HTML模板功能

发布于:
Script

本文利用的是XML的DSO数据绑定功能来实现ASP代码和HTML代码的分离,从而实现快速更换HTML模板的功能,由于本人只是刚刚开始接触XML,有许多不太了解的,在这里仅仅是提出一点想法,如果本文有错漏的地方请大家指多.

目前快速更换模板功能基本上是处于replace替换模板中的特殊标签后再显示出来,这样加大了许多ASP的处理时间,而且模板文件过长的话,加载到内存里进行处理时也是对服务器内存的一种考验.而XML中提供了一种DSO数据绑定功能.可以将标识替换操作交付给客户端.由于为了简化HTML模板的制作要求.所以,尽量简化HTML模板的XML技术含量是有必要的.

简单来说这个方式只是使用datasrc和dataFLd这两个HTML标签的属性实现的.废话就不多说了,一切实例说话.以下两个例子将说明一切. 

使用模板实现ASP代码与页面分离

发布于:
Script

每个进行过较大型的ASP-Web应用程序设计的开发人员大概都有如下的经历:ASP代码与页面HTML混淆难分,业务逻辑与显示方式绞合,使得代码难以理解、难以修改;程序编写必须在美工之后,成为项目瓶颈;整合的程序代码和HTML静态页面时,花费大量的时间才能得到理想的效果,兼作了美工。的确,用脚本语言开发Web应用不容易将数据的处理和数据的显示分开,但在多人合作的情况下,如果无法将数据和显示分开,将大大影响开发的效率,专业分工的发挥。

  其它的脚本语言,如JSP、PHP都有自己的解决方案,ASP的后一代产品ASP.NET也实现了代码与页面,似乎直接过渡到ASP是不错的选择。但是总有这样或那样的原因让我们不能或暂时不能放弃ASP直奔.NET大营。从公司角度来看,转换语言是一笔不少的投资,包括雇佣熟手.NET程序员、培训原有程序员、开发工具的转型、开发风格的转型、界面风格转变、接口风格、软件架构、文档、开发流程等等;这还意味着原有的代码必须在新语言环境里重写以实现最佳的效果和稳定性;同时将直接影响这段时间内项目的进度,更有可能导致个别程序员出走。由此看来在您决定转换语言之前,在原基础上寻求一种解决方案,才是最好的选择。

  PHP通过模板实现代码与页面,可供选择的有FastTemplate、PHPLIB、Smarty等多种,其中PHPLIB的影响最大、使用最多。既然如此,我们直接把它搬到ASP来,对于同时使用PHP和ASP的公司还有很有好处:一、美工处理页面时,不管将要套用PHP还是ASP,处理方式是一样,无须经过培训;二、程序员编写代码时,两种语言间的思路接近或一致,相同功能在两种语言实现时,只需拷贝过来略作修改即可,保证了工作效率和项目进度。

1、模板类的设计

  实现代码封装成为模板类,即是为了与PHPLIB兼容,也使得代码方便管理与扩展。

  模板类要实现的目标为:从模板文件中读入显示的HTML代码,将这些显示代码中需要动态数据的地方替换为ASP程序运算所得出的数据,然后按照一定的顺序输出。其中,替换的部分可以自由的设定。因此它必须完成如下任务:

·从模板文件中读取显示用的HTML代码。

·将模板文件和实际生成的数据结合,生成输出的结果。

·允许同时处理多个模板。

·允许模板的嵌套。

·允许对模板中的某个单独的部分进行处理。

实现方法:

采用FSO读取模板文件

采用正则替换实现模板文件和数据的结合

处理多个模板用数组存储来实现。

模板的嵌套的实现主要的想法是:将模板和输出(任何中间的分析结果)一视同仁,都可拿来做替换,即可实现。

单独部分的处理的通过在模板文件中设定标注,然后在正则替换中结合标注来控制,实现部分替换。