上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 27 下一页
摘要: 简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标。如果数据库只接受一个连接一次只执行一个查询。那么查询当然是要多快好省的完成工作。但对于大多数数据库来说是需要同时处理多个查询的。这些查询并不会像绅士那样排队等待执行,而是会找最短的路径执行。因此,就像十字路口需要一个红绿灯那样,SQL Server也需要一个红绿灯来告诉查询:什么时候走,什么时候不可以走。这个红绿灯就是锁。 图1.查询可不会像绅士们那样按照次序进行排队 为什么需要锁 在开始谈锁之前,首先要简单了解一下事务和事务的ACID属性。可以参看我之前的一篇关于ACI... 阅读全文
posted @ 2012-03-22 11:06 CareySon 阅读(31380) 评论(27) 推荐(81) 编辑
摘要: 简介 SQL Server2012中新增的AlwaysOn是一个新增高可用性解决方案。在AlwaysOn之前,SQL Server已经有的高可用性和数据恢复方案,比如数据库镜像,日志传送和故障转移集群.都有其自身的局限性。而AlwaysOn作为微软新推出的解决方案,提取了数据库镜像和故障转... 阅读全文
posted @ 2012-03-20 12:28 CareySon 阅读(37471) 评论(21) 推荐(14) 编辑
摘要: 简介 SQL Server2012新增的Indirect CheckPoint允许CheckPoint的恢复间隔设置到数据库级别,而不是以前那样实例级别。 在数据库级别设置的恢复时间以秒为单位,而不是在实例级别的以分钟为单位。这可以更精确的保证数据库Recovery的最大时间。 配置Indirect CheckPoint Indirect Checkpoint是数据库级别的。在SQL SERVER中,包括Contained Database,SQL Server把一些设置从实例级别转到了数据库级别。 按照MSDN上对Indirect CheckP... 阅读全文
posted @ 2012-03-14 16:33 CareySon 阅读(2939) 评论(11) 推荐(2) 编辑
摘要: 简介 SQL SERVER2012实现了类似C#抛出异常的Throw语句。相比较于SQL Server2005之前使用@@ERROR,和SQL Server2005之后使用RAISERROR()引发异常都是一个不小的进步,下面来看一下Throw的用法。 RAISERROR和THROW比较 在SQL Server2005/2008中,使用RAISERROR和TRY…CATCH语句来抛出异常相比较根据@@ERROR进行判断来讲已经进步了很多。但是使用RAISERROR有一个非常不好的一点是无法返回真正出错的行数。如图1所示。 图1.使用RAISER... 阅读全文
posted @ 2012-03-14 12:01 CareySon 阅读(7200) 评论(8) 推荐(7) 编辑
摘要: 简介 SQL Server 2012新增的Contained Database是为了解决数据库在不同SQL Server实例之间迁移的问题。在以往的情况下,数据库本身并不包含一些实例级别的配置参数(比如:数据库的一些metadata和登录名之类的)将数据库从一台服务器迁移到另一台服务器使用备份和恢复(或分离和附加)使得需要额外工作来设置这些数据库实例级别的metadata,而使用Contained Database,可以将这类信息包含在数据库中,从而大大减少这类工作的工作量。 下面我们从配置Contained Database开始。 配置Contained Data... 阅读全文
posted @ 2012-03-13 13:45 CareySon 阅读(4994) 评论(7) 推荐(6) 编辑
摘要: 简介 SQL Server2012新增了一些内置函数来让开发人员使用起来更加容易。可以减少代码量,下面我们将SQL Server新增的函数分为几类分别探讨一下。 字符串类函数 SQL Server2012中提供了两个和字符串相关的函数,分别为Concat和Format. Concat如其名称所示,用于连接两个字符串.但比过去的增强是可以免去类型转换的烦恼而直接将多个值连接为一个String值进行返回,如图1所示. 图1.Concat示例 Concat的MSDN链接为:http://msdn.microsoft.com/en-... 阅读全文
posted @ 2012-03-12 17:07 CareySon 阅读(14702) 评论(11) 推荐(23) 编辑
摘要: 简介 SequenceNumber是SQL Server2012推出的一个新特性。这个特性允许数据库级别的序列号在多表或多列之间共享。对于某些场景会非常有用,比如,你需要在多个表之间公用一个流水号。以往的做法是额外建立一个表,然后存储流水号。而新插入的流水号需要两个步骤: 1.查询表中流水号的最大值 2.插入新值(最大值+1) 现在,利用SQL Server2012中的Sequence.这类操作将会变得非常容易。 SequenceNumber的基本概念 SequenceNumber的概念并不是一个新概念,Oracle早就已经实现了(ht... 阅读全文
posted @ 2012-03-12 12:27 CareySon 阅读(15274) 评论(14) 推荐(11) 编辑
摘要: 简介 SQL Server 2012中在Order By子句之后新增了OFFSET和FETCH子句来限制输出的行数从而达到了分页效果。相比较SQL Server 2005/2008的ROW_Number函数而言,使用OFFSET和FETCH不仅仅是从语法角度更加简单,并且拥有了更优的性能(看到很多人下过这个结论,但我测试有所偏差,暂且保留意见)。 MSDN上对于OFFSET和FETCH的详细描述可以在(http://msdn.microsoft.com/en-us/library/ms188385%28v=SQL.110%29.aspx)找到。 OFFSET和FET... 阅读全文
posted @ 2012-03-09 16:27 CareySon 阅读(23655) 评论(32) 推荐(17) 编辑
摘要: 简介 费了半天劲,今天终于装好SQL Server2012了。按照MSDN中的新特性资料(Columnstore Indexes for Fast DW QP SQL Server 11)。尝试了下ColumnStore Index。ColumnStore Index按照其字面意思所示。是基于列存储的索引。这个概念如图1所示。 图1.ColumnStoreIndex和基于行的Index比较 ColumnStoreIndex是按照列存入页当中,而不是按照传统的以行为单位存入页。因此带来的好处可以归结如下: 以往的数据按照行存储,... 阅读全文
posted @ 2012-03-09 13:32 CareySon 阅读(11801) 评论(15) 推荐(17) 编辑
摘要: 简介 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。 可以想象出,需要使用Merge的场景比如: 数据同步 数据转换 基于源表对目标表做Insert,Update,De... 阅读全文
posted @ 2012-03-07 16:03 CareySon 阅读(65401) 评论(45) 推荐(76) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 27 下一页