使用context_info传递上下文信息禁用会话级触发器
摘要: 如何在会话级别禁用触发器是个问题,因为sql server并没有提供一个管理手段可以在会话级禁用触发器,它只提供alter table 表名 disable trigger 触发器名 类似这种,而这种方法一旦执行,那如果在同一时间的其他过程,也不会执行触发器。但是我们可以巧妙绕道使用 context_info 来让触发器支持会话级别的禁用。新建触发器[代码]如果要在会话级禁用触发器,只需...
阅读全文
关于防止sql注入的几种手段(三)
摘要: 上一篇引起不少争议,也是自己没有一次性写完。上回说到邹健大哥的存储过程有漏洞, 有人又提出这个很多都是程序员加上去的,压根就不可能注入,的确,有很多拼凑sql的时候是程序里面加上去的,不是来自外界的“直接”输入。我上次的演示例子是基于的最后的排序,那如果要是在where 条件里面呢?能保证100%都不是来自外界的输入吗?另外,软件的分层开发,很多程序员的水平参差不齐,能保证...
阅读全文
关于防止sql注入的几种手段(二)
摘要: 其实特别不愿意说sql注入的问题,因为这的确是个老掉牙的问题了,但是仍然还有不少人在这方面自以为安全性做得很到位,或者说万事只要存储过程就可以防止注入,即全都参数化,这样对于某些复杂逻辑来说,sql存储过程写法太过于冗长,不如在C#拼凑sql,也有很多人鄙视拼凑sql的人,我觉得,看待 sql注入这个问题,应该是从本质上来杜绝注入,而不是想当然的依靠存储过程,拒绝拼凑sql。我说一下我自己的经验吧
阅读全文
关于防止sql注入的几种手段(一)
摘要: 其实特别不愿意说sql注入的问题,因为这的确是个老掉牙的问题了,但是仍然还有不少人在这方面自以为安全性做得很到位,或者说万事只要存储过程就可以防止注入,即全都参数化,这样对于某些复杂逻辑来说,sql存储过程写法太过于冗长,不如在C#拼凑sql,也有很多人鄙视拼凑sql的人,我觉得,看待sql注入这个问题,应该是从本质上来杜绝注入,而不是想当然的依靠存储过程,拒绝拼凑sql。我说一下我自己的经验吧一...
阅读全文
sql server中的hash应用优化
摘要: sql server很多地方用到hash,计划缓存查找,hash连接,hash聚合等。hash查找mssql很多设计中都应用了,不过我们能在开发设计中,也可以利用这个特性。将如果有需求对大文本进行完全匹配,比如查找产品型号(较长字符串),那么可以建立一个产品型号的hash字段,然后在hash字段上进行查找,不过最重要的是如果匹配成功,还不要忘记在where上再加一个条件,就是原始产品型号字段的一致...
阅读全文
请谨慎使用sp_executesql
摘要: 前一段时间,给一位朋友公司做咨询,看到他们的很多的存储过程都存在动态sql语句执行,sp_executesql,即使在没有动态表名,动态字段名的情况下仍然使用sp_executesql,这个做法是不太明智的,会存在一些性能方面的问题。先说说什么场景使用这个系统存储过程吧,sp_executesql,是sql server动态执行一段可以带有参数(内参,外参)的语句文本的系统存储过程,传入sp_ex...
阅读全文
GUID和INT自增做主键的测试
摘要: 测试机器:dell2850,2cpu,2G内存,数据库为简单模式,避免日志记录影响(不过似乎一般的应用场景都是完整模式)Int自增表[代码]GUID表[代码]顺序GUID表[代码]测试插入的脚本:[代码]Int表插入1w条记录是61626微妙,61560微妙,两次测试结果相差不大。GUID表插入1w条记录是63156微妙,62436微妙。基于上两次测试没有测试OGUID表了。每次测试均trunca...
阅读全文
关于侯垒的自增字段和GUID字段性能对比文章的一些自己的分析(没有测试,纯粹分析)
摘要: 一上午都在忙着面试,闲暇看到侯垒的文章,http://www.cnblogs.com/houleixx/archive/2009/07/29/SQL-id-guid.html,我觉得他为一个很小的细节作出这么多的测试,实在是佩服,但是基于我自己的一些知识,可能有些东西不是很认可。mssql的int自增是4字节,GUID是4个4字节,根据mac地址产生分有序列和无序列,有序列即产生的GUID自增,无...
阅读全文
MSSQL优化教程之1.4 其他几种类型的页面
摘要: 上一次只是讲了讲普通数据页面,后来自己回想一下,应该跟大家讲讲其他类型的页面,作为一个知识体系贯穿起来。 再长叹一声,我的兄弟因伤退赛,唉,真是可惜了..................
阅读全文
MSSQL优化之 1.3 存储架构之 页
摘要: SQL Server中的页是最基本的数据单位组成,他有8KB,也就是8192个字节(mssql7.0以前是一个页面2KB),而sql server的一个页面,由页头,数据行,和slot table组成(行偏移的位置的记录数组。本文将详细介绍页的构成。
阅读全文
MSSQL优化之 1.1 存储架构之文件和文件组
摘要: 本篇文章将由粗到细,讲解数据库的物理组成结构。有些东西可能是废话或是摘抄自BOL,等权威文章,但是作为一个知识体系结构,还是需要啰嗦一下。还包括了一些性能优化方面的知识。
阅读全文
sql server数据库优化教程系列--开篇
摘要: 终于决定自己动手写一个了,以前一直是在看别人的文章,也是因为自己的文笔不好,另外也是怕自己被人喷,但是还是鼓足勇气自己写上一个优化系列吧,算是对我这些日子对SQl Server数据库优化工作的一个总结。
阅读全文