Rex

——生命不止,战斗不息。
随笔 - 27, 文章 - 0, 评论 - 1, 引用 - 0
数据加载中……

2008年7月6日

http 错误代码 详解

所有 HTTP 状态代码及其定义。
 代码  指示  
2xx  成功  
200  正常;请求已完成。  
201  正常;紧接 POST 命令。  
202  正常;已接受用于处理,但处理尚未完成。  
203  正常;部分信息 — 返回的信息只是一部分。  
204  正常;无响应 — 已接收请求,但不存在要回送的信息。  
3xx  重定向  
301  已移动 — 请求的数据具有新的位置且更改是永久的。  
302  已找到 — 请求的数据临时具有不同 URI。  
303  请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。  
304  未修改 — 未按预期修改文档。  
305  使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。  
306  未使用 — 不再使用;保留此代码以便将来使用。  
4xx  客户机中出现的错误  
400  错误请求 — 请求中有语法问题,或不能满足请求。  
401  未授权 — 未授权客户机访问数据。  
402  需要付款 — 表示计费系统已有效。  
403  禁止 — 即使有授权也不需要访问。  
404  找不到 — 服务器找不到给定的资源;文档不存在。  
407  代理认证请求 — 客户机首先必须使用代理认证自身。  
415  介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。  
5xx  服务器中出现的错误  
500  内部错误 — 因为意外情况,服务器不能完成请求。  
501  未执行 — 服务器不支持请求的工具。  
502  错误网关 — 服务器接收到来自上游服务器的无效响应。  
503  无法获得服务 — 由于临时过载或维护,服务器无法处理请求。
-----------------------------------------------------------------------------------------------------------------------
HTTP 400 - 请求无效 
HTTP 401.1 - 未授权:登录失败 
HTTP 401.2 - 未授权:服务器配置问题导致登录失败 
HTTP 401.3 - ACL 禁止访问资源 
HTTP 401.4 - 未授权:授权被筛选器拒绝 
HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败  
HTTP 403 - 禁止访问 
HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost 
HTTP 403.1 禁止访问:禁止可执行访问 
HTTP 403.2 - 禁止访问:禁止读访问 
HTTP 403.3 - 禁止访问:禁止写访问 
HTTP 403.4 - 禁止访问:要求 SSL 
HTTP 403.5 - 禁止访问:要求 SSL 128 
HTTP 403.6 - 禁止访问:IP 地址被拒绝 
HTTP 403.7 - 禁止访问:要求客户证书 
HTTP 403.8 - 禁止访问:禁止站点访问 
HTTP 403.9 - 禁止访问:连接的用户过多 
HTTP 403.10 - 禁止访问:配置无效 
HTTP 403.11 - 禁止访问:密码更改 
HTTP 403.12 - 禁止访问:映射器拒绝访问 
HTTP 403.13 - 禁止访问:客户证书已被吊销 
HTTP 403.15 - 禁止访问:客户访问许可过多 
HTTP 403.16 - 禁止访问:客户证书不可信或者无效 
HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效 
HTTP 404.1 - 无法找到 Web 站点 
HTTP 404 - 无法找到文件 
HTTP 405 - 资源被禁止 
HTTP 406 - 无法接受 
HTTP 407 - 要求代理身份验证 
HTTP 410 - 永远不可用 
HTTP 412 - 先决条件失败 
HTTP 414 - 请求 - URI 太长 
HTTP 500 - 内部服务器错误 
HTTP 500.100 - 内部服务器错误 - ASP 错误 
HTTP 500-11 服务器关闭 
HTTP 500-12 应用程序重新启动 
HTTP 500-13 - 服务器太忙 
HTTP 500-14 - 应用程序无效 
HTTP 500-15 - 不允许请求 global.asa 
Error 501 - 未实现 
HTTP 502 - 网关错误 

posted @ 2008-07-06 13:29 W.R 阅读(43) | 评论 (0)编辑 收藏

2008年7月1日

又换工作了。。。唉!

        没整明白,又换了份工作。其实这都不是我想要的结果,我这人似乎就不习惯在一个地方长时间的呆,总是没有一个终点。总是有一颗不安分的心。感觉新单位的开发效率不高,我能否带动一支队伍的积极性呢?这是个问题,得寻求一种解决方案,必须好好研究研究。。。还有这里用的技术都是很老的技术,没有一个良好的管理方式。。。我又想起自己说卖就把自己卖了。呵呵,人真无聊。

posted @ 2008-07-01 16:59 W.R 阅读(71) | 评论 (0)编辑 收藏

2008年5月23日

ms sql 小知识

exec sp_addlinkedserver  'link_sql2','','SQLOLEDB','127.0.0.1;
exec sp_addlinkedsrvlogin 'link_sql2','false',null,'sa','sa';

select *from  Table1
insert into [link_sql2].OSS.dbo.Table1 select *from  Table1

posted @ 2008-05-23 10:35 W.R 阅读(22) | 评论 (0)编辑 收藏

2008年5月4日

Alpha、Beta、RC、GA版本的区别

Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。

Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。

RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。

GA:General Availability,正式发布的版本,在国外都是用GA来说明release版本的。

RTM:(Release to Manufacture)是给工厂大量压片的版本,内容跟正式版是一样的,不过RTM版也有出限制、评估版的。但是和正式版本的主要程序代码都是一样的。

OEM:是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。包装不像零售版精美,通常只有一面CD和说明书(授权书)。

RVL:号称是正式版,其实RVL根本不是版本的名称。它是中文版/英文版文档破解出来的。

EVAL:而流通在网络上的EVAL版,与“评估版”类似,功能上和零售版没有区别。

RTL:Retail(零售版)是真正的正式版,正式上架零售版。在安装盘的i386文件夹里有一个eula.txt,最后有一行EULAID,就是你的版本。比如简体中文正式版是EULAID:WX.4_PRO_RTL_CN,繁体中文正式版是WX.4_PRO_RTL_TW。其中:如果是WX.开头是正式版,WB.开头是测试版。_PRE,代表家庭版;_PRO,代表专业版。

α、β、λ常用来表示软件测试过程中的三个阶段,α是第一阶段,一般只供内部测试使用;β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

posted @ 2008-05-04 09:46 W.R 阅读(105) | 评论 (0)编辑 收藏

2008年5月2日

读生命不能承受之轻


  尼采常常与哲学家们纠缠—个神秘的“众劫回归”观:想想我们经历过的事情吧,想想它们重演如昨,甚至重演本身无休无止地重演下去!这癫狂的幻念意味着什么?
  从反面说“永劫回归”的幻念表明,曾经一次性消失了的生活,象影子一样没有分量,也就永远消失不复回归了。无论它是否恐依,是否美丽,是否崇高,它的恐怖、崇高以及美丽都预先已经死去,没有任何意义。它象十四世纪非洲部落之间的某次战争,某次未能改变世界命运的战争,哪伯有十万黑人在残酷的磨难中灭绝,我们也无须对此过分在意。
  然而,如果十四世纪的两个非洲部密的战争一次又一次重演,战争本身会有所改变吗?会的,它将变成一个永远隆起的硬块,再也无法归复自己原有的虚空。
  如果法国大革命永无休止地重演,法国历史学家们就不会对罗伯斯庇尔感到那么自豪了。正因为他们涉及的那些事不复回归,于是革命那血的年代只不过变成了文字、理论和研讨而已,变得比鸿毛还轻,吓不了谁。这个在历史上只出现一次的罗伯斯庇尔与那个永劫回归的罗伯斯庇尔绝不相同,后者还会砍下法兰西万颗头颅。
  于是,让我们承认吧,这种永劫回归观隐含有一种视角,它使我们所知的事物看起来是另一回事,看起来失去了事物瞬时性所带来的缓解环境,而这种缓解环境能使我们难于定论。我们怎么能去谴责那些转瞬即逝的事物呢?昭示洞察它们的太阳沉落了,人们只能凭借回想的依稀微光来辩释一切,包括断头台。
  不久前,我察觉自己体验了一种极其难以置信的感觉。我翻阅一本关于希特勒的书,被他的一些照片所触动,从而想起了自己的童年。我成长在战争中,好几位亲人死于希特勒的集中营;我生命中这一段失落的时光已不复回归了。但比较于我对这一段时光的回忆,他们的死算是怎么回事呢?
  对希特勒的仇恨终于淡薄消解,这暴露了一个世界道德上深刻的堕落。这个世界赖以立足的基本点,是回归的不存在。因为在这个世界里,一切都预先被原谅了,一切皆可笑地被允许了。

  如果我们生命的每一秒钟都有无数次的重复,我们就会象耶稣钉于十字架,被钉死在永恒上。这个前景是可怕的。在那永劫回归的世界里,无法承受的责任重荷,沉沉压着我们的每一个行动,这就是尼采说永劫回归观是最沉重的负担的原因吧。
  如果永劫回归是最沉重的负担,那么我们的生活就能以其全部辉煌的轻松,来与之抗衡。
  可是,沉重便真的悲惨,而轻松便真的辉煌吗?
  最沉重的负担压得我们崩塌了,沉没了,将我们钉在地上。可是在每一个时代的爱情诗篇里,女人总渴望压在男人的身躯之下。也许最沉重的负担同时也是一种生活最为充实的象征,负担越沉,我们的生活也就越贴近大地,越趋近真切和实在。
  相反,完全没有负担,人变得比大气还轻,会高高地飞起,离别大地亦即离别真实的生活。他将变得似真非真,运动自由而毫无意义。
  那么我们将选择什么呢?沉重还是轻松?
  巴门尼德于公元前六世纪正是提出了这一问题。她看到世界分成对立的两半:光明、黑暗;优雅、粗俗;温暖、寒冷;存在、非存在。他把其中一半称为积极的(光明;优雅,温暖,存在),另一半自然是消极的。我们可以发现这种积极与消极的两极区分实在幼稚简单,至少有一点难以确定:哪一方是积极?沉重呢?还是轻松?
  巴门尼德回答:轻为积极,重为消极。
  他对吗?这是个疑问。唯一可以确定的是:轻、重的对立最神秘,也最模棱两难。

posted @ 2008-05-02 16:14 W.R 阅读(32) | 评论 (0)编辑 收藏

2008年4月30日

java 当前路径

注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。

得到classpath和当前类的绝对路径的一些方法

获得CLASSPATH之外路径的方法:

URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/ String path = new File(base.getFile(), "……/……/……/"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name

下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

1.FileTest.class.getResource("")

得到的是当前类FileTest.class文件的URI目录。不包括自己!

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

2.FileTest.class.getResource("/")

得到的是当前的classpath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

3.Thread.currentThread().getContextClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

4.FileTest.class.getClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

5.ClassLoader.getSystemResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。

在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。

注意点:

1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。这是一颗定时炸弹,随时可能要你的命。

2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI,URL,File对象。

3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。

4.绝对不要使用硬编码的绝对路径。因为,我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。

使用硬编码的绝对路径是完全没有必要的!它一定会让你死的很难看!程序将无法移植!

如果你一定要指定一个绝对路径,那么使用配置文件,也比硬编码要好得多!

当然,我还是推荐你使用程序得到classpath的绝对路径来拼资源的绝对路径.

posted @ 2008-04-30 15:04 W.R 阅读(130) | 评论 (0)编辑 收藏

2008年2月26日

工程师 十条

[1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!   

 

[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!   

[3]不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!   

[4]多交社会三教九流的朋友!不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低!

 [5]知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!!   

[6]抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉!应该说这才是前途的真正支柱!!!   

[7]逐渐克服自己的心里弱点和性格缺陷!多疑,敏感,天真(贬义,并不可爱),犹豫不决,胆怯,多虑,脸皮太薄,心不够黑,教条式思维。。。这些工程师普遍存在的性格弱点必须改变!很难吗?只在床上想一想当然不可能,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想!不克服这些缺点,一切不可能,甚至连项目经理都当不好--尽管你可能技术不错!   

[8]工作的同时要为以后做准备!建立自己的工作环境!及早为自己配置一个工作环境,装备电脑,示波器(可以买个二手的),仿真器,编程器等,业余可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出象样的产品,就可技术转让或与人合作搞企业!先把东西准备好,等待机会,否则,有了机会也抓不住!   

[9]要学会善于推销自己!不仅要能干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,很必要!要创造条件让别人了解自己,不然老板怎么知道你能干?外面的投资人怎么相信你?提早把自己推销出去,机会自然会来找你!搞个个人主页是个好注意!!特别是培养自己在行业的名气,有了名气,高薪机会自不在话下,更重要的是有合作的机会...   

[10]该出手时便出手!永远不可能有100%把握!!!条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败。不经历风雨,怎么见彩虹,没有人能随随便便成功!



摘自品牌学习网-->给工程师的十大忠言

posted @ 2008-02-26 13:25 W.R 阅读(36) | 评论 (0)编辑 收藏

2008年1月11日

不想写代码的日子

        今天不想写代码,一个字符都不想写了。
        从迈进大学校门经过四年的洗礼,紧接着工作,到现在共有六年半的时间了,在这段日子里,自己写的代码不多,估计有近百万行了吧。突然觉得人生总与代码为舞,指尖总在键盘上跳芭蕾实在无趣。
        我想体会百味人生,我坚信我能咬牙停住任何日子。我理解一个干渴的人靠意志走出沙漠的精神,即便是最后倒在小河边,临死也没能喝上那至始至终都幻想的一口水。我向往那种精神。
        我想这么做,我也想那么做;想法是纯天然的,社会是纯现实的,谁叫我是一个生活在这样一个社会的人呢。我有我的双亲,我有我的哥哥、嫂子,我将来还会有侄子(侄女)。我又是一个传统的人,逃不掉供养我双亲的责任。由此,可得出我需要一份稳定的收入,所以我不能想这么做就这么做,想那么做就那么做。
        自由就是做一切法律允许的事情,你完全享受了自由吗。结论是:享受自由是一个过程,并不在与你享受了多少。但是法律又是他妈个什么东西?
        感情就是。。。一种说不出的感觉,在你大脑里,她就是一个特殊的对象,与众不同,永远比其他重要。所以它就是。。。说不出。
        一个上午过去了,我除了看一会NBA网站上的新闻,帮同事解决了两个问题,就是在这儿抒情。。。
        要吃午饭了,拜拜。

posted @ 2008-01-11 11:53 W.R 阅读(34) | 评论 (0)编辑 收藏

2007年12月25日

关于在存储过程中的语句

查找MS SQL SERVER 2005的相关文档后记录这些:
1.ANSI_NULLS

1SET ANSI_NULLS ON
2GO

上面第一行是 指定与空值一起使用时的等于 (=) 和不等于 (<>) 比较运算符的 SQL-92 标准行为。
SQL SERVER 的联机丛书里提道:后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
用法解释:SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。

当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。

当 SET ANSI_NULLS 为 ON 时,所有对空值的比较均取值为 UNKNOWN。当 SET ANSI_NULLS 为 OFF 时,如果数据值为 NULL,则所有数据对空值的比较将取值为 TRUE。如果未指定 SET ANSI_NULLS,则应用当前数据库的 ANSI_NULLS 选项设置。有关 ANSI_NULLS 数据库选项的详细信息,请参阅 ALTER DATABASE (Transact-SQL)设置数据库选项

仅当某个比较操作数是值为 NULL 的变量或文字 NULL 时,SET ANSI_NULLS ON 才会影响比较。如果比较双方是列或复合表达式,则该设置不会影响比较。

为使脚本按预期运行,不管 ANSI_NULLS 数据库选项或 SET ANSI_NULLS 的设置如何,请在可能包含空值的比较中使用 IS NULL 和 IS NOT NULL。

在执行分布式查询时应将 SET ANSI_NULLS 设置为 ON。

对计算列或索引视图创建或更改索引时,SET ANSI_NULLS 也必须为 ON。如果 SET ANSI_NULLS 为 OFF,则针对表(包含计算列或索引视图的索引)的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。SQL Server 将返回一个错误消息,该错误消息会列出所有违反所需值的 SET 选项。另外,在执行 SELECT 语句时,如果 SET ANSI_NULLS 为 OFF,则 SQL Server 将忽略计算列或视图的索引值并解析选择操作,就好像表或视图没有这样的索引一样。
ANSI_NULLS 是在处理计算列或索引视图的索引时必须设置为所需值的七个 SET 选项之一。还必须将选项 ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER 和 CONCAT_NULL_YIELDS_NULL 设置为 ON,而必须将 NUMERIC_ROUNDABORT 设置为 OFF。

2.SET QUOTED_IDENTIFIER

SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。有关详细信息,请参阅标识符。文字可以由单引号或双引号分隔。

当 SET QUOTED_IDENTIFIER 为 ON(默认值)时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必符合 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 (") 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。

当 SET QUOTED_IDENTIFIER 为 OFF 时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。

当在计算列或索引视图上创建或更改索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。有关计算列的索引视图和索引所必需的 SET 选项设置的详细信息,请参阅 SET (Transact-SQL) 中的“使用 SET 语句时的注意事项”。

在进行连接时,SQL 本机客户端 ODBC 驱动程序和 SQL Server 的 SQL Native Client OLE DB Provider 自动将 QUOTED_IDENTIFIER 设置为 ON。这可以在 ODBC 数据源、ODBC 连接特性或 OLE DB 连接属性中进行配置。对来自 DB-Library 应用程序的连接,SET QUOTED_IDENTIFIER 默认设置为 OFF。

创建表时,即使此时将 QUOTED IDENTIFIER 选项设置为 OFF,该选项在表的元数据中仍始终存储为 ON。

创建存储过程时,将捕获 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 设置,并用于该存储过程的后续调用。

在存储过程内执行 SET QUOTED_IDENTIFIER 时,其设置不更改。

当 SET ANSI_DEFAULTS 为 ON时,将启用 SET QUOTED_IDENTIFIER。

SET QUOTED_IDENTIFIER 还与 ALTER DATABASE 的 QUOTED_IDENTIFER 设置相对应。有关数据库设置的详细信息,请参阅 ALTER DATABASE (Transact-SQL)设置数据库选项

SET QUOTED_IDENTIFIER 是在分析时进行设置的。在分析时进行设置意味着:SET 语句只要出现在批处理或存储过程中即生效,与代码执行实际上是否到达该点无关;并且 SET 语句在任何语句执行之前生效。


3.SET NOCOUNT ON
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数(返回受上一语句影响的行数)。

当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft SQL Server 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。

4.临时表的使用
a.临时表其实是放在数据库tempdb里的一个用户表,当不再使用时会自动删除。
b.一种是以#(局部)或##(全局)开头的表,这种表在会话期间存,会话结束则自动删除;二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个符号   (#)   打头;它们仅对当前的用户连接是可见的;当用户从   Microsoft&reg;   SQL   Server™   2000   实例断开连接时被删除。全局临时表的名称以数学符号   (##)   打头,创建后对任何用户都是可见的,当所有引用该表的用户从   SQL   Server   断开连接时被删除。
c.另一种,如果创建时不以#或##开头,而用tempdb.TempTable来命名它,则该表可在数据库重启前一直存在.


posted @ 2007-12-25 13:31 W.R 阅读(208) | 评论 (0)编辑 收藏

2007年11月23日

关 于 查 询

1.查询从第N条到第M条:
       在MSSQL中  可以用  方式1:
SELECT TOP m-n+1 * FROM TableA 
  
WHERE (id NOT IN 
    (
SELECT TOP n-1 id FROM   TableA)) 
id 为TableA表的关键字
        也可用方式2:在存储过程中新建一张临时表 取查询表的主键做字段
CREATE procedure pagination1
(
@pagesize int,  --页面大小,如每页存储20条记录
@pageindex int   --当前页码
)
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int)  --定义表变量
declare @PageLowerBound int  --定义此页的底码
declare @PageUpperBound int  --定义此页的顶码
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select gid from TGongwen where fariqi >dateadd(day,-365,getdate()) order by fariqi desc
select O.gid,O.mid,O.title,O.fadanwei,O.fariqi from TGongwen O,@indextable t where O.gid=t.nid
and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
end
set nocount off


借助临时表来达到你的目的。
个人推荐第1种方式。

另外  not in 与 not exists 在执行效率上是没有本质的区别的。

posted @ 2007-11-23 13:02 W.R 阅读(32) | 评论 (0)编辑 收藏