03 2012 档案

摘要:简介 数据库快照,正如其名称所示那样,是数据库在某一时间点的视图。是SQL Server在2005之后的版本引入的特性。快照的应用场景比较多,但快照设计最开始的目的是为了报表服务。比如我需要出2011的资产负债表,这需要数据保持在2011年12月31日零点时的状态,则利用快照可以实现这一点。快照还可以和镜像结合来达到读写分离的目的。下面我们来看什么是快照。 什么是快照 数据库快照是 SQL Server 数据库(源数据库)的只读静态视图。换句话说,快照可以理解为一个只读的数据库。利用快照,可以提供如下好处: 提供了一个静态的视图来为报表提供服务 ... 阅读全文
posted @ 2012-03-30 11:14 CareySon 阅读(27243) 评论(23) 推荐(49) 编辑
摘要:简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标。如果数据库只接受一个连接一次只执行一个查询。那么查询当然是要多快好省的完成工作。但对于大多数数据库来说是需要同时处理多个查询的。这些查询并不会像绅士那样排队等待执行,而是会找最短的路径执行。因此,就像十字路口需要一个红绿灯那样,SQL Server也需要一个红绿灯来告诉查询:什么时候走,什么时候不可以走。这个红绿灯就是锁。 图1.查询可不会像绅士们那样按照次序进行排队 为什么需要锁 在开始谈锁之前,首先要简单了解一下事务和事务的ACID属性。可以参看我之前的一篇关于ACI... 阅读全文
posted @ 2012-03-22 11:06 CareySon 阅读(31515) 评论(27) 推荐(81) 编辑
摘要:简介 SQL Server2012中新增的AlwaysOn是一个新增高可用性解决方案。在AlwaysOn之前,SQL Server已经有的高可用性和数据恢复方案,比如数据库镜像,日志传送和故障转移集群.都有其自身的局限性。而AlwaysOn作为微软新推出的解决方案,提取了数据库镜像和故障转... 阅读全文
posted @ 2012-03-20 12:28 CareySon 阅读(37508) 评论(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 阅读(2952) 评论(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 阅读(7229) 评论(8) 推荐(7) 编辑
摘要:简介 SQL Server 2012新增的Contained Database是为了解决数据库在不同SQL Server实例之间迁移的问题。在以往的情况下,数据库本身并不包含一些实例级别的配置参数(比如:数据库的一些metadata和登录名之类的)将数据库从一台服务器迁移到另一台服务器使用备份和恢复(或分离和附加)使得需要额外工作来设置这些数据库实例级别的metadata,而使用Contained Database,可以将这类信息包含在数据库中,从而大大减少这类工作的工作量。 下面我们从配置Contained Database开始。 配置Contained Data... 阅读全文
posted @ 2012-03-13 13:45 CareySon 阅读(5015) 评论(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 阅读(14771) 评论(11) 推荐(23) 编辑
摘要:简介 SequenceNumber是SQL Server2012推出的一个新特性。这个特性允许数据库级别的序列号在多表或多列之间共享。对于某些场景会非常有用,比如,你需要在多个表之间公用一个流水号。以往的做法是额外建立一个表,然后存储流水号。而新插入的流水号需要两个步骤: 1.查询表中流水号的最大值 2.插入新值(最大值+1) 现在,利用SQL Server2012中的Sequence.这类操作将会变得非常容易。 SequenceNumber的基本概念 SequenceNumber的概念并不是一个新概念,Oracle早就已经实现了(ht... 阅读全文
posted @ 2012-03-12 12:27 CareySon 阅读(15323) 评论(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 阅读(23690) 评论(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 阅读(11827) 评论(15) 推荐(17) 编辑
摘要:简介 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。 可以想象出,需要使用Merge的场景比如: 数据同步 数据转换 基于源表对目标表做Insert,Update,De... 阅读全文
posted @ 2012-03-07 16:03 CareySon 阅读(65494) 评论(45) 推荐(76) 编辑
摘要:简介 在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找就是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响就变得十分重要了。本文从旨在从性能的角度来谈聚集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。 聚集索引所在的列或列的组合最好是唯一的 这个原因需要从数据的存放原理来谈。在SQL Server中,数据的存放方式并不是以行(Row)为单位,而是以页为单位。因此,在查找数据时,SQL Server查找的最小单位实际上是页。也就是说即使你只查找一行很小... 阅读全文
posted @ 2012-03-06 11:30 CareySon 阅读(21814) 评论(56) 推荐(39) 编辑
摘要:你在公司的饮水机旁,一边和等待接水一边和同事聊着周末的计划。 “我整个周末都需要加班”她抱怨道。我需要在周末结束之前给大BOSS设计一个仪表。这让你想起了你已经创建过的报表,你感觉你应该能帮上她。 “我们应该使用报表服务”,你接完水时说道。然后你打开通向报表服务的阶梯系列来看看你能学到什么。本篇文章通过一个示例仪表来展示折线图,数据条和指示器。幸运的话,你和你的同事周末就都不用加班了。 在开始之前,希望你先阅读本系列文章之前的文章。 如何开始 报表开发人员开发两种类型的报表:分析型报表和工作报表。工作报表是在日常工作中经常用到的,它们包... 阅读全文
posted @ 2012-03-02 16:50 CareySon 阅读(9934) 评论(2) 推荐(7) 编辑