查询及删除重复记录的方法大全
摘要:1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from peoplewhere peopleId in (select peopleId from people group by peopleId having count
阅读全文
posted @
2013-12-29 00:07
davidkam
阅读(209)
推荐(0)
在存储过程中编写正确的事务处理代码
摘要:在 SQL Server 中数据库事务处理是个重要的概念,也稍微有些不容易理解,很多 SQL 初学者编写的事务处理代码存往往存在漏洞,本文介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码。在编写 SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ... delete statement 3 ... commit tran这样编写的SQL存在很大隐患。请看下面的例子: cre...
阅读全文
posted @
2013-12-28 17:03
davidkam
阅读(200)
推荐(0)
存储过程中使用事务与try catch
摘要:一、存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式:代码 :Create Procedure MyProcedure( @Param1 nvarchar(10),@param2 nvarchar(10))ASBeginSet NOCOUNT ON;Set XACT_ABORT ON;Begin TranDelete from table1 where name=’abc’;Insert into table2 values(value1,value2,value3)
阅读全文
posted @
2013-12-28 14:25
davidkam
阅读(457)
推荐(0)
ppt打不出中文
摘要:1. 安装微软输入法2007就可以解决了 这个是微软的一个bug,在powerpoint 2007里面如果监测到你的注册表里面没有微软拼音输入法2007的话,就不能够打出中文。2. 如果你不想安装微软拼音2007的话,你可以用下面的方法:新建一个文本文件,然后复制下面分割线内的内容,然后将文本另存为“注册.reg” 注意,这里的后缀是reg,就是注册表文件,然后双击这个文件导入,然后重启就可以解决了~~~=====================(不要复制我,我是分割线)====================Windows Registry Editor Version 5.00[HKE..
阅读全文
posted @
2013-12-27 16:24
davidkam
阅读(243)
推荐(0)
.net发邮件 附件文件名乱码
摘要:.net发邮件 附件文件名乱码,可以下载以下补丁安装。https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31723
阅读全文
posted @
2013-12-20 22:19
davidkam
阅读(331)
推荐(0)
Excel导出问题(导出时不去掉前面的0)(转)
摘要:最简单的方法是:在数字前面加'符号。即代码里添加: "'"以下均是网上搜集到的其他解答:一.代码如下:style="mso-number-format:'/@';"现在说明一下;一般在我在做ASP导出EXCEL页面时在开头加上如下代码:这部份在网上都有然后是我的代码了: style="mso-number-format:'/@';"这段代码是把所在或内的数据格式化为文本,我不知道HTML是否支持这个STYLE,但EXCEL是一定支持的,要不然我就不可能解决问题了,希望大家都能解决一直以来
阅读全文
posted @
2013-12-17 09:36
davidkam
阅读(811)
推荐(0)
IRequiresSessionState和IReadOnlySessionState应用上的一些差异
摘要:在调用ashx时,如果需要应用Session,则必须继承接口 IRequiresSessionState,IReadOnlySessionState,但根据字面,可以知道 IRequiresSessionState可对Session进行所有操作,IReadOnlySessionState只能对Session进行只读 操作假设场景:有页面Test.aspx以及一般处理程序Requires.ashx和ReadOnly.ashx(Requires.ashx继承IRequiresSessionState,ReadOnly.ashx继承IReadOnlySessionState,两者的ProcessRe
阅读全文
posted @
2013-12-12 09:39
davidkam
阅读(312)
推荐(0)
java 判断两个时间段是不是有交集
摘要:如上图:X Y Z 分别为传来的开始时间可能位于数据库中时间段的位置。X有三种可能 即传来的开始时间为与数据可中某条数据的开始位置! 这样他的结束时间就有三种可能 1.位于数据库中开始时间(start)之前 2.位于数据库中开始时间(start)与结束时间(end)之间 3.位于数据库中结束时间...
阅读全文
posted @
2013-12-11 11:54
davidkam
阅读(9091)
推荐(0)
Ajax轮询以及Comet模式—写在Servlet 3.0发布之前(转)
摘要:2008 年的夏天,偶然在网上闲逛的时候发现了 Comet 技术,人云亦云间,姑且认为它是由 Dojo 的 Alex Russell 在 2006 年提出。在阅读了大量的资料后,萌发出写篇 blog 来说明什么是 Comet 的想法。哪知道这个想法到了半年后的今天才提笔,除了繁忙的工作拖延外,还有 Comet 本身带来的困惑。Comet 能带来生产力的提升是有目共睹的。现在假设有 1000 个用户在使用某软件,轮询 (polling) 和 Comet 的设定都是 1s 、 10s 、 100s 的潜伏期,那么在相同的潜伏期内, Comet 所需要的带宽更小,...
阅读全文
posted @
2013-12-11 08:57
davidkam
阅读(508)
推荐(0)
HTTP长连接(Comet)实现方式示例
摘要:昨天看了comet的介绍后,虽然大概知道了comet的原理,不过没实际用过还是不太清楚,于是今天又在网上翻了一下别的网友共享的comet实现http长连接的例子,在Comet Server Push 技术介绍一文中分别提到了 ”基于长轮询(long polling)“、”基于iframe“、”基于流(stream)“三种实现comet的方式,下面我将网上找到的对应的例子链接做个汇总,就当目录吧,留作以后看基于长轮询(long polling)的特点1. 服务器端会阻塞请求直到有数据传递或超时才返回。2. 客户端响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。3. 当客户端
阅读全文
posted @
2013-12-11 02:02
davidkam
阅读(3549)
推荐(1)
讲解HTML服务器推送相关技术知识(转)
摘要:1. 为什么需要服务器推送?最大的优点:实时健康知识平台重庆男科医院重庆妇科医院适用场景:实时股票价格、商品价格、实时新闻、Twitter/weibo timeline、基于浏览器的聊天系统2. Web交互的发展历程?F5手动刷新 --> AJAX轮询(Polling) --> Comet实时更新 --> HTML5实时通信 随着AJAX的流行,当前大部分网站都采取轮询的方式进行更新,但是这种方式的效率是十分低下的;一方面,服务器端不是总有数据更新,所以每次请求不一定都有更新;另一方面,当发起请求的客户端数量增加,服务器端的接受的请求数量会大量上升,无形中就增加了服务器的压力
阅读全文
posted @
2013-12-11 01:09
davidkam
阅读(259)
推荐(0)
Web通信之:长轮询(long-polling)(转)
摘要:Web通信之:长轮询(long-polling) “轮询”是个耐人寻味的词,第一次看到它的时候我就直接理解为“轮流查询”了。但是看到了英文才知道这个是网络通信专业的术语。轮询,其实就是一群人在排队买东西。polling这个词也生动的形容了这个的状态。就像这样 轮询如果是排队买东西,那么长轮询就是排队上厕所。买东西的话,丢下钱就可以拿东西走了,但是上厕所就不一样,有些人说不定便秘半个小时都出不来。如果只用轮询去做Web通信,那服务器就鸭梨山大了,它需要一直做的接受和断开HTTP请求的操作。就像卖热销产品的店员就没有公共厕所管理员那么轻松。 服务器就是厕所,需要上厕所的就是客户端的XHR对象...
阅读全文
posted @
2013-12-11 01:05
davidkam
阅读(642)
推荐(0)
Web 通信 之 长连接、长轮询(long polling)(转)
摘要:基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。一、什么是长连接、长轮询?用通俗易懂的话来说,就是客户端不停的向服务器发送请求以获取最新的数据信息。这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它只是一种快速的停下然后又立即开始连接而已。二、长连接、长轮询的应用场景长连接、长轮询一般应用与WebIM、ChatRoom和一些需要及时交互的网站应用中。其真实案例有:WebQQ、Hi网页版、Facebook IM等。如果你对服务器端的反向Ajax感兴趣,可以参考这篇文章 D
阅读全文
posted @
2013-12-11 00:54
davidkam
阅读(286)
推荐(0)
轮询和长轮询的优缺点
摘要:在网上查了一下资料,发现轮询和长轮询还有不同的定义:轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。优点:后端程序编写比较容易。缺点:请求中有大半是无用,浪费带宽和服务器资源。实例:适于小型应用。长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。优点:在无消息的情况下不会频繁的请求。缺点:服务器hold连接会消耗资源。实例:WebQQ、Hi网页版、Facebook IM。另外,对于长连接和socket连接也有区分:长连接:在页面里嵌入一个隐蔵ifram
阅读全文
posted @
2013-12-11 00:47
davidkam
阅读(5537)
推荐(1)
长轮询和Comet
摘要:长轮询方式是由前端定时发起AJAX请求,若请求到数据则把数据显示出来。comet方式是由客户端与服务器端发起一个长连接,然后客户端通过监听事件的方式,来对服务器端返回的数据作出响应和处理。实时性要求不高使用长轮询,比如微博;实时性要求较高使用comet,比如聊天室。用firebug调试一下weibo.com的网络请求可以发现,微博用的是轮询来实现消息提醒的,应该是用set timer隔个30秒或一分钟去服务器进行查询。和即时通信的web应用不同,微博提醒实时性要求不高,所以用轮询方式比较合理,没有必要用长连接。没错,不是非要使用长连接的。长连接对象保存在服务器,要占用一定的内存。降低了服务器的
阅读全文
posted @
2013-12-11 00:23
davidkam
阅读(441)
推荐(0)
分享一些Comet开发经验
摘要:前言本comet技术主要用于数据库持久层的 穿越防火墙 远程访问。只要有一台中继网站,任意地点的数据库都能被访问。Comet概念介绍WebIM、网页的客服、meebo等大家听说过了。最近还有个兄弟开源了个网页客服叫,PowerTalk。各位可以搜索一下。这些最新最炫的技术,用了一个叫comet的架构。comet对于我来说= http长连接这个是一个通俗的解释。老外最擅长就就是发明概念,生怕别人忘了自己的存在。因此把一个很简单的东西搞了一个摸不着边的名词:Comet。Comet思想怎么来先抛开comet,给个案例分析:局域网(防火墙内)的客户端要与外界联系,如何做到?必然想到了客户端主动发出申请
阅读全文
posted @
2013-12-10 23:06
davidkam
阅读(345)
推荐(0)
Quartz.net 2.0的使用说明
摘要:Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于WinForm和ASP.NET应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而 创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。好了,现在具体来说一下怎么使用Quartz.net 2.0。 1.到网上下载Quartz.net 2.0,下载完后解压,里面有vs.net2008和vs.net2010两个版本。 2.新建一个空项目,在里面增加一个类库应用程序和web应用程序,由于我...
阅读全文
posted @
2013-12-10 14:42
davidkam
阅读(501)
推荐(0)
WebSocket
摘要:1 2 3 4 HTTP Polling 5 6 23 24 25 26 27 28 Comet.html 1 2 3 4 5 6 7 8 9 35 36 Socket.htmlWebSocket
阅读全文
posted @
2013-12-10 11:32
davidkam
阅读(261)
推荐(0)
ajax轮询
摘要:oa.comet = function (id) { if (oa.id == 0) oa.id = id; $.ajax({ url: '/comet.asy?id=' + id, cache: false, dataType: 'json', error: function (request, status, thrown) { setTimeout(oa.comet, 8000 * oa.errTimes); oa.errTimes++; }, //出错 8秒之后自动连接服务器 success: function (data) { if (data) {
阅读全文
posted @
2013-12-10 11:18
davidkam
阅读(201)
推荐(0)
服务器内容推送技术(转)
摘要:服务器内容推送技术1、 传统轮询:利用WEB页面META刷新机制,指定一定时间间隔进行页面装载服务。不足:用户体验差,服务器压力大2、 Ajax轮询:采用异步响应机制不足:有延迟,服务器压力比较大,客户端主动请求3、 Comet:建立到服务器的长连接机制,服务器推送技术是保持原有的HTTP协议不 变,在服务器端改变处理方式,使得服务器能够使用浏览器已经打开的HTTP连接,主动向浏览器发送消息。这里关键的技术是要保持原有的 HTTP连接不断。一旦拥有持久的连接,服务器就可以根据自己的数据更新,随时地向客户端发送最新的信息。Comet的实现是基于异步请求服务(ARP)之上的,因此整个框架结构仍然符
阅读全文
posted @
2013-12-10 10:57
davidkam
阅读(500)
推荐(0)
基于Web的数据推送技术(转)
摘要:基于Web的数据推送技术对于实时性数据显示要求比较高的系统,比如竞价,股票行情,实时聊天等,我们的解决方案有以下几种。1. HTTP请求发送模式,一般可以基于ajax的请求,比如每3秒一次访问下服务器,实现过程比较简单,只要需求不是太变态,基本上认为这个时间延迟可以接受的话,那完全没有问题,不过服务端的压力有点大,访问量多的话,那就很容易挂了,这个也是为什么很多聊天室有人数限制的原因了,我怀疑一个聊天室就有一台服务器撑着。2.基于socket的推送方式,这个是真正的推送技术,服务器压力相对较小,但是要保持和客户端通讯的socket,以便需要的时候可以拿到这个socket给用户发送消息。但是保持
阅读全文
posted @
2013-12-10 10:54
davidkam
阅读(649)
推荐(0)
LINQ to SQL使用教程
摘要:前些时间用LINQ to SQL做了一些项目,现在打算总结一下,帮助新手快速入门,并写一些别的教程没提到的东西。一、LINQ to SQL和别的LINQ to XXX有什么关系?二、延迟执行(Deferred Loading)三、什么是LINQ to SQL?四,看看LINQ to SQL到底干了些啥?——创建自己的工具类五、创建一个基本查询六,大致扫一扫 1,WHERE 2,DISTINCT 3,AVG/COUNT/SUM/MIN/MAX 4,GROUP BY 5,CASE WHEN 6,INNER JOIN和OUTER JOIN 6.1 內连接 6.2 外连接 7,ORDER BY 8..
阅读全文
posted @
2013-12-09 20:46
davidkam
阅读(1225)
推荐(2)
Dapper的完整扩展(转)
摘要:真心想说:其实。。。我不想用Dapper,如果OrmLite.Net支持参数化的话,也就没Dapper的什么事情了,对于OrmLite.Net只能做后续跟踪......这个其实是看了Dapper作者的扩展后觉得不爽,然后自己按照他的设计思路重写了代码,只支持单个数据的增删改查,根据Expression来查的真心无能为力......另外作者似乎已经支持了属性、字段等与数据库中的映射.....具体包含了1、对字符串的扩展2、对主键的定义,支持单或多主键,当单主键并且类型为数字时,认为该主键为自增列3、对表名的定义实际代码如下:DapperExtensions部分[csharp]view plain
阅读全文
posted @
2013-12-08 00:30
davidkam
阅读(15724)
推荐(3)
Dapper.net 在Parameterized时对于String的扩展(转)
摘要:虽然Dapper通过提供的DbString本身支持对于String的指定Parameterized,但这方法明显不够,当Insert时,我们更希望是把一个Poco直接传递过去,而不是来new一个匿名函数,对于string类型的属性,转化成DbString,然后一个一个的属性再写一遍,这多苦逼通过代码,可以看到有这么一段方法public static Action CreateParamInfoGenerator(Identity identity, bool checkForDuplicates, bool removeUnused)这段代码就是用来构建Param参数的,内部通过Emit来实现
阅读全文
posted @
2013-12-08 00:22
davidkam
阅读(737)
推荐(0)
Entity Framework 5.0
摘要:今天 VS2012 .net Framework 4.5 Entity Framework 5.0 三者共同发布了。 (EF5 Released) 在介绍新特性之前,先与大家回顾一下EF版本变化及一些重要变更:框架 EF 备注.net Framework 3.5 EF 1.0.net Framework 4.0 EF 4.0 EF4.0是集成在 net framework中的,而4.1~4.4仅仅是在其上的引入,并非框架的本身.net Framework 4.0 EF 4.1 引入了DbContext以及POCO模型,应该算是很大改进.net Fram...
阅读全文
posted @
2013-12-04 17:18
davidkam
阅读(312)
推荐(0)
用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记(转)
摘要:[本文篇幅较长,可以通过目录查看您感兴趣的内容,或者下载格式良好的PDF版本文件查看]目录 一、ORM的"三国志"2 1,PDF.NET诞生历程22,Linq2Sql&EF:33,微型ORM崛起4二、一决高下42.1,ORM没有DataSet快?42.1.1,ORM生成SQL的质量问题42.1.2,DataReader没有DataSet快?52,ORM的三个火枪手62.1,委托+缓存62.2,表达式树112.3,Emit12三、华山论剑143.1,参赛阵容143.2,比赛内容143.3,武功介绍153.3.1,EF的招式:153.3.1,DataSet 的招式:16
阅读全文
posted @
2013-12-01 02:12
davidkam
阅读(600)
推荐(0)
雅虎团队:网站性能优化的35条黄金守则(转)
摘要:Yahoo!的 Exceptional Performance团队为改善 Web性能带来最佳实践。他们为此进行了一系列的实验、开发了各种工具、写了大量的文章和博客并在各种会议上参与探讨。最佳实践的核心就是旨在提高网站性能。原版猛戳:Best Practices for Speeding Up Your Web Site,Excetional Performance 团队总结出了一系列可以提高网站速度的方法。可以分为 7大类 35条。 包括内容 、服务器 、 CSS 、 JavaScript 、Cookie 、图片 、移动应用 ,七部分。一、内容部分尽量减少 HTTP请求减少 DNS查找避免跳转
阅读全文
posted @
2013-12-01 02:07
davidkam
阅读(201)
推荐(0)
在window server 2008 64位系统上 发布网站的过程中遇到的问题(转)
摘要:发布网站的过程如下:1、安装数据库系统2、建立数据库,执行sql3、安装iis4、在本地机子上发布网站5、把发布好的东西拷贝到IIS上1、安装数据库系统:出现错误:必须使用角色管理工具 安装或配置microsoft.net framework 3.5 sp1 在如下地址中找到答案:http://blog.csdn.net/geniusqiao/article/details/7406066具体内容如下:在window server 2008 64位系统上安装sqlserver2008 的时候报的一个错误。首先 sqlserver2008 要求 framework 3.5 ,在2003的时候,安
阅读全文
posted @
2013-12-01 01:46
davidkam
阅读(265)
推荐(0)
sqlserver能否调用webservice发送短信呢?
摘要:上班的时候突然有一个想法,sqlserver能否调用webservice发送短信呢?经过查找资料,终于找到了解决办法,现将步骤贴到下面:(1)开启sqlserver组件功能,如果不开启这个组件功能,那么在sqlserver执行语句时将不会成功。sp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Ole Automation Procedures', 1;GORECONFIGURE;GO以数据库管理员的身份执行上面的语句,返回结果如下:配置选项 'show advanc
阅读全文
posted @
2013-12-01 01:43
davidkam
阅读(907)
推荐(0)
数据库优化方案(转)
摘要:摘要:一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意。所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项。关 于数据库优化方面的文章很多,但是有的写的似是而非,有的不切实际,对一个数据库来说,只能做到更优,不可能最优,并且由于实际需求不同,优化方案还是有 所差异,根据实际需要关心的方面(速度、存储空间、可维护性、可拓展性)来优化数据库,而这些方面往往又是相互矛盾的,下面结合网上的一些看法和自己的一 些观点做个总结。 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优,也不单单是开发阶段的事情..
阅读全文
posted @
2013-12-01 01:38
davidkam
阅读(248)
推荐(0)
SQL点滴之编辑数据(转)
摘要:数据库中的数据编辑是我们遇到的最频繁的工作,这一个随笔中我来总结一下最常用的数据编辑。 select into 经常遇到一种情况是,我们希望创建一个新表,表中的数据来源于原有的一个表;原有一个表,但是这个表中的数据已经很混乱,我们希望把这些数据备份出来,然后把原有的表中的数据清除,重新导入;在这些情况下我们可以使用select into语句。 如果当前用户拥有建表权限,在select语句使用关键字into可以在数据库中创建新的 表。这个语句只需要把into new_table_name加到选择出的列名之后,from关键字之前,当然数据可以来源于一个或多个表中。需要说明的是在新表中只包...
阅读全文
posted @
2013-12-01 01:36
davidkam
阅读(302)
推荐(0)
数据库水平切分方法(转)
摘要:在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数据量,通常会把数据库或者数据表水平切分,以降低单个库,单个表的压 力。我这里介绍两个我们项目中常用的数据表切分方法。当然这些方法都是在程序中使用一定的技巧来路由到具体的表的。首先我们要确认根据什么来水平切分? 在我们的系统(SNS)中,用户的UID贯穿系统,唯一自增长,根据这个字段分表,再好不过。 方法一:使用MD5哈希 做法是对UID进行md5加密,然后取前几位(我们这里取前两位),然后就可以将不同的UID哈希到不同的用户表(user_xx)中了。function getTable( $uid ){ $ext=substr ...
阅读全文
posted @
2013-12-01 01:36
davidkam
阅读(245)
推荐(0)
小温谈数据库优化--数据设计篇(转)
摘要:三大范式: 第1规范:没有重复的组或多值的列,这是数据库设计的最低要求。 第2规范: 每个非关键字段必须依赖于主关键字,不能依赖于一个组合式主关键字的某些组成部分。消除部分依赖,大部分情况下,数据库设计都应该达到第二范式。 第3规范: 一个非关键字段不能依赖于另一个非关键字段。消除传递依赖,达到第三范式应该是系统中大部分表的要求,除非一些特殊作用的表。 更高的范式要求这里就不再作介绍了,个人认为,如果全部达到第二范式,大部分达到第三范式,系统会产生较少的列和较多的表,因而减少了数据冗余,也利于性能的提高。 完全按照三大范式规范化设计的系统几乎是不可能的,除非系统特别的小,在规范化...
阅读全文
posted @
2013-12-01 01:33
davidkam
阅读(233)
推荐(0)
擦亮自己的眼睛去看SQLServer之简单Insert(转)
摘要:摘要:本来是打算先写SQLServer历史的,不过感觉写那部分内容比较难还需要多查些资料。于是调整了下顺序写下简单的Insert语句。 不过感觉写那部分内容比较难还需要多查些资料。于是调整了下顺序写下简单的Insert语句。数据库结构还是采用上一篇的结构。具体查看上一篇文章《擦亮自己的眼睛去看SQL Server之简单Select》。今天讨论的语句也比较简单,Insert语句。 一、Insert脚本 insertinto Test([Name]) values('xiaojun') 没什么好说的,因为想写这样的语句太简单。 二、 语句分析 这条语句到底发生了什么呢?假...
阅读全文
posted @
2013-12-01 01:32
davidkam
阅读(232)
推荐(0)
擦亮自己的眼睛去看SQLServer之简单Select(转)
摘要:摘要:这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句。 这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句。不知道大家有没有想过到底是什么东西让SQL Server能理解我们写的select。这中间到底发生了什么,是不是有过冲动想去了解。至少我曾经冲动想去了解,但当时主要在研究CLR以及 WebForm相关知识。后来主要精力放在研究SQL Server内部机制,今天就给大家介绍下这条语句。 一、范例数据库脚本 createdatabase Test go alterdatabase Test set recovery simple...
阅读全文
posted @
2013-12-01 01:31
davidkam
阅读(352)
推荐(0)
SQL Server优化50法(转)
摘要:虽然查询速度慢的原因很多,但是如果通过一定的优化,也可以使查询问题得到一定程度的解决。 查询速度慢的原因很多,常见如下几种:没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)I/O吞吐量小,形成了瓶颈效应。没有创建计算列导致查询不优化。内存不足网络速度慢查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)sp_lock, sp_who, 活动的用户查看,原因是读写竞争资源。返回了不必要的行和列查询语句不好,没有优化 可以通过如下方法来优化查询 :把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可...
阅读全文
posted @
2013-12-01 01:30
davidkam
阅读(245)
推荐(0)
走向DBA[MSSQL篇] - 从SQL语句的角度提高数据库的访问性能(转)
摘要:最近公司来一个非常虎的DBA,10几年的经验,这里就称之为蔡老师吧,在征得我们蔡老同意的前提下 ,我们来分享一下蔡老给我们带来的宝贵财富,欢迎其他的DBA来拍砖。目录1、什么是执行计划?执行计划是依赖于什么信息2、 统一SQL语句的写法减少解析开销3、 减少SQL语句的嵌套4、 使用“临时表”暂存中间结果5、 OLTP系统SQL语句必须采用绑定变量6、 倾斜字段的绑定变量窥测问题7、 begin tran的事务要尽量地小8、 一些SQL查询语句应加上nolock9、加nolock后查询经常发生页分裂的表,容易产生跳读或重复读10、聚集索引没有建在表的顺序字段上,该表容易发生页分裂11、使用复合
阅读全文
posted @
2013-12-01 01:28
davidkam
阅读(232)
推荐(0)
数据库索引的基础知识(转)
摘要:一、理解索引的结构 索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。微软 的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。 SQL Server 中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 每次读取或写入数据...
阅读全文
posted @
2013-12-01 01:26
davidkam
阅读(275)
推荐(0)
有关T-SQL的10个好习惯(转)
摘要:1. 在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多。但我这里还是要说一下。 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计。更主要的原因来自以下两点:扩展方面的问题造成额外的书签查找或是由查找变为扫描 扩展方面的问题是当表中添加一个列时,Select *会把这一列也囊括进去,从而造成上面的第二种问题。 而额外的IO这点显而易见,当查找不需要的列时自然会产生不必要的IO,下面我们通过一个非常简单的例子来比较这两种差别,如图1所示。图1.*带来的不必要的IO 2. 声...
阅读全文
posted @
2013-12-01 01:25
davidkam
阅读(179)
推荐(0)
SQL Server 高性能写入的一些总结(转)
摘要:1.1.1 摘要 在开发过程中,我们不时会遇到系统性能瓶颈问题,而引起这一问题原因可以很多,有可能是代码不够高效、有可能是硬件或网络问题,也有可能是数据库设计的问题。 本篇博文将针对一些常用的数据库性能调休方法进行介绍,而且,为了编写高效的SQL代码,我们需要掌握一些基本代码优化的技巧,所以,我们将从一些基本优化技巧进行介绍。 本文目录代码中的问题数据库性能开销使用存储过程使用数据库事务使用SqlBulkCopy使用表参数 1.1.2 正文 假设,我们要设计一个博客系统,其中包含一个用户表(User),它用来存储用户的账户名、密码、显示名称和注册日期等信息。 由于时间的关系,我们已...
阅读全文
posted @
2013-12-01 01:23
davidkam
阅读(326)
推荐(0)
典型的 SQL 注入过程(转)
摘要:无意间发现某站点存在 SQL 注入漏洞,于是利用这个漏洞提权并获取服务器控制权。这个案例很典型,像是教科书式的典型入侵步骤,下面就以这个案例展示从 SQL 注入到获取目标服务器控制权限的全过程。发现 访问某站点的搜索页面,发现输入单引号“'”就直接报错,这就说明这个页面存在 注入的可能。为了证实这点,首先闭合请求访问语句,然后对比返回结果的差异。 发现访问 http://foo/rss.aspx?keyword=lucky 以及 http://foo/rss.aspx?keyword=lucky')); 都可以被执行,但是返回的结果不同。根据下面的错误信息,是注释掉了 ORDE
阅读全文
posted @
2013-12-01 01:18
davidkam
阅读(573)
推荐(0)
SQL注入中利用XP_cmdshell提权的用法(转)
摘要:先来介绍一下子服务器的基本情况,windows 2000 adv server 中文版,据称打过了sp3,asp+iis+mssql 。首先扫描了一下子端口,呵呵,开始的一般步骤。端口21开放: FTP (Control)端口80开放: HTTP, World Wide Web端口135开放: Location Service端口139开放: NETBIOS Session Service端口1433开放: Microsoft-SQL-Server开了几个很经典的端口,应该说个个都很经典啊。既然确定好了端口,那就有针对性地扫描一下看看开了什么共享么,faint,老兄把ipc$,admin$,c
阅读全文
posted @
2013-12-01 01:09
davidkam
阅读(6744)
推荐(0)
网站sqlserver提权操作
摘要:在入侵过程中,得到SQLserver的权限,想进一步得到system权限的方法总结*************************** 利用xp_cmdshell ***********************************一.更改sa口令方法:用sql综合利用工具连接后,执行命令:exec sp_password NULL,'新密码','sa'(提示:慎用!)二.简单修补sa弱口令.方法1:查询分离器连接后执行:if exists (select * from dbo.sysobjects where id = object_id(N'[d
阅读全文
posted @
2013-12-01 00:46
davidkam
阅读(1073)
推荐(0)