代码改变世界

随笔分类 -  05 - SQL Server 数据库

数据库引擎 - 表和索引数据结构体系结构

2013-02-18 11:00 by BIWORK, 1694 阅读, 收藏, 编辑
摘要: SQL Server 数据库中的对象存储为 8 KB 页的集合, 本节说明如何组织, 存储和访问表和索引页.表组织下图显示了表的组织, 表包含在一个或多个分区中, 每个分区在一个堆或一个聚集索引结构包含数据行. 堆页或聚集索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型.分区表页和索引页包含在一个或多个分区中, 分区是用户定义的数据组织单元.默认情况下, 表或索引只有一个分区, 其中包含所有的表页或索引页. 该分区驻留在单个文件组中. 具有单个分区的表或索引相当于 SQL Server 早期版本中的表和索引的组织结构.当表或索引使用多个分区时, 数据将被水平分区, 阅读全文

数据库引擎 - 文件和文件组体系结构

2013-02-17 14:26 by BIWORK, 584 阅读, 收藏, 编辑
摘要: SQL Server 将数据库映射为一组操作系统文件. 数据和日志信息绝不会混合在同一个文件中, 而且一个文件只由一个数据库使用.文件组是命名的文件集合,用于帮助数据布局和管理任务,例如备份和还原操作.数据库文件SQL Server 数据库具有三种类型的文件:主数据文件主数据文件是数据库的起点, 指向数据库中的其他文件. 每个数据库都有一个主数据文件, 主数据文件的推荐文件扩展名是 .mdf次要数据文件除主数据文件以外的所有其他数据文件都是次要数据文件. 某些数据库可能不含有任何次要数据文件, 而有些数据库则含有多个次要数据文件, 次要数据文件的推荐文件扩展名是 .ndf。日志文件日志文件包含 阅读全文

数据库引擎 - 页和区体系结构-页和区

2013-02-17 13:28 by BIWORK, 689 阅读, 收藏, 编辑
摘要: 页SQL Server 中数据存储的基本单位是页,为数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到n连续编号)。磁盘 I/O 操作在页级执行,也就是说,SQL Server 读取或写入所有数据页。区是八个物理上连续的页的集合, 用来有效地管理页, 所有页都存储在区中。在 SQL Server 中, 页的大小为 8 KB, 这意味着SQL Server 数据库中每 MB 有 128 页.每页的开头是 96 字节的标头, 用于存储有关页的系统信息. 此信息包括页码, 页类型, 页的可用空间以及拥有该页的对象的分配单元 ID.下表说明了 SQL Serve 阅读全文

容易遗忘的一些小代码之 ROW_NUMBER 和去重

2013-01-07 15:40 by BIWORK, 4225 阅读, 收藏, 编辑
摘要: ROW_NUMBER 的使用基本上倒不会遗忘了, 这是很久以前的代码库了, 整理出来对初学者有帮助.如果去继续研究研究 SQL Server 2012 中的Window Function 新特性, 就会发现里面还有更多很强大的东东, 很多内容和这里的 ROW_NUMBER 的概念或者使用方式有些相似.理解了ROW_NUMBER 以及 PARTITION BY 的使用再去看 2012的 Windows Function 新特性的话会比较容易些.-- ROW_NUMBER function DECLARE @DEMO TABLE( Name VARCHAR(15), ADDR1 VARC... 阅读全文

容易遗忘的一些小代码之 PIVOT 和 UNPIVOT

2013-01-07 15:23 by BIWORK, 633 阅读, 收藏, 编辑
摘要: 这个代码以前也经常使用, 不过一段时间之后,每每有人问起如何使用或者要求帮忙检查出错问题时,就要回头再看看这个例子.还好自己搞过,留个底子在这里. 对 PIVOT 和 UNPIVOT 最简单描述 - 行转列,列转行!!!SSIS 中也有这样的一个控件,实现的效果也是一样的.--------------------------------------------------------------------- PIVOT demo from MSDN document---------------------------------------------------------------- 阅读全文

容易遗忘的一些小代码之 Merge Operation and Output Clause

2013-01-07 15:17 by BIWORK, 675 阅读, 收藏, 编辑
摘要: 根据与源表, 对目标表执行插入、更新或删除操作.根据在另一个表中找到的差异在一个表中插入,更新或删除行,可以对两个表进行同步. 在数据仓库应用中,这种SQL语句的使用比SSIS工具的使用更加容易维护些,因为表同步的逻辑可以写在存储过程中,维护的时候只需要维护存储过程即可,而不需要打开Package去检查SSIS Component的配置. /** Merge Operation and Output Clause**/-- Source tableDECLARE @SourceTable TABLE( ID INT PRIMARY KEY, DSPT VARCHAR(50))-- Ta... 阅读全文

容易遗忘的一些小代码之 Cross apply and Outer apply

2013-01-07 15:05 by BIWORK, 421 阅读, 收藏, 编辑
摘要: 总有些小代码用的时候很熟悉, 不用的时候时间长了, 再看到的时候就有些生了, 不知道是我一个人这样还是都是这样, 人老了, 好记性不如烂笔头吧!-- Cross Apply and Out ApplyIF OBJECT_ID('AppDemo1','U') IS NOT NULLDROP TABLE AppDemo1GO IF OBJECT_ID('AppDemo2','U') IS NOT NULLDROP TABLE AppDemo2GO IF OBJECT_ID('dbo.UDF_AppDemo',' 阅读全文

OBJECT_ID 有哪些种类

2013-01-07 14:50 by BIWORK, 6266 阅读, 收藏, 编辑
摘要: 特别是在建表建存储过程的时候进场会写到:IF OBJECT_ID('Table_Test','U') IS NOT NULLDROP TABLE Table_Test这种方式代替了以往所使用的IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME = 'Tabl... 阅读全文

BIWORK 分区表滑动窗口阅读与实践笔记

2012-12-07 18:07 by BIWORK, 696 阅读, 收藏, 编辑
摘要: 基于上一篇 http://www.cnblogs.com/biwork/archive/2012/12/07/BIWORK_Table_Partition_Notes.html继续了解 Sliding Window 滑动窗口的处理Note:示例中使用到了SQL Server 2000的Demo Database,可以从此链接中下载http://www.microsoft.com/en-us/download/confirmation.aspx?id=23654/****************************************************************-- 阅读全文

BIWORK 分区表阅读与实践笔记

2012-12-07 18:00 by BIWORK, 950 阅读, 收藏, 编辑
摘要: /***************************************************************BIWORK 分区表阅读与实践笔记Note: 示例中使用到了SQL Server 2000的 Demo Database, 可以从此链接中下载http://www.microsoft.com/en-us/download/confirmation.aspx?id=23654在检查删除Partition Function以及Partition Scheme时,要注意Partition Scheme引用了Partition Function,所有需要先删除Partitio 阅读全文