摘要:
开篇介绍2015年1月1日,新的一年开始之际,本来应该好好做点有意义的事情来跨个年的。结果,老习惯 - 睡觉之前一定要折腾一下电脑,说干就干,给新到的 DELL 电脑装虚机,下载 SQL SERVER 2014,安装 SQL SERVER 2014。SQL SERVER 2014 安装完成以后,不像... 阅读全文
随笔分类 - 05 - SQL Server 数据库
SQL Server - 把星期一(周一)当作每个星期的开始在一年中求取周数
2014-02-12 22:46 by BIWORK, 27719 阅读, 收藏, 编辑
摘要:
先感叹一句!好长时间没有更新博客了!偶尔看到一句话,觉得被电击了 - 庸人败于懒,能人败于傲!因此,不能再懒惰了!今天想写一个有关计算 Week Number 的函数,刚开始觉得应该很简单,凭着感觉七写八写到最后发现越写越乱,到最后搞了快两个小时以为解决了,结果一测还有好多数据不正确。非常有挫败感!感觉很不服气,觉得很丢人,跑出去站了会,冷静下来,重新拿起纸笔认真的分析了一下,连写到测试快半个小时还是解决了。在 SQL Server 中默认情况下,每周的开始都是从周日开始算起的。但是在国内也有不一样的要求,比如按照习惯往往要求每周从周一算起。这样一来之前在数据仓库中的 Week Number 阅读全文
SQL Server - 使用 Merge 语句实现表数据之间的对比同步
2013-10-15 15:29 by BIWORK, 25406 阅读, 收藏, 编辑
摘要:
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等。包括在 SSIS Package 中也可以通过 Lookup, Condition Split 等多种 Task 的组合来实现表数据之间的同步。在这里 "同步" 的意思是指每次执行一段代码的时候能够确保 A 表的数据和 B 表的数据始终相同。可以通过 SQL Server 中提供的 Merge 语句来实现,并且还可以将操作的细节记录下来。具体的细节内容请参照 -http://msdn.microsoft.com/zh-cn/librar 阅读全文
SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
2013-09-25 15:24 by BIWORK, 13802 阅读, 收藏, 编辑
摘要:
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫。所以花了点时间,把 SQL Server 数据库中的事务概念,ACID 原则,事务中常见的问题,问题造成的原因和事务隔离级别等这些方面的知识好好的整理了一下。其实有关 SQL Server 中的事务,说实话因为内容太多, 话题太广,稍微力度控制不好就超过了我目前知识能力范围,就不是三言两语能够讲清楚的。所以希望大家能够指出其中总结的不足之处,对我来说多了提高的机会,更可以帮助大家加深对事务的理解。本文涉及到的知识点:SQL Server 数据库中 阅读全文
BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)
2013-09-18 18:25 by BIWORK, 38391 阅读, 收藏, 编辑
摘要:
微软 BI ETL 架构设计 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改的记录数 微软 BI SSIS 系列 微软BI 之SSIS 系列 - 在 SSIS 中读取 Shar 阅读全文
配置 SQL Server Email 发送以及 Job 的 Notification通知功能
2013-08-07 23:43 by BIWORK, 8403 阅读, 收藏, 编辑
摘要:
在与数据库相关的项目中, 比如像数据库维护, 性能警报, 程序出错警报或通知都会使用到在 SQL Server 中配置Email发送邮件的功能.在BI项目中, 这种功能也使用的比较多. 比如 SSIS Package 一般会配置到 SQL Server Agent 按计划执行, 这时 Package 执行失败后就需要在 Job 中发送邮件通知以及时排除错误. 有的时候在 Package 级别也会将错误信息存入 Error Log中, 使用触发器来发送邮件, 以防止 Job 中的Notification 没有配置成功或者禁用.一个基于表级别, 一个基于 Job 级别, 它们都需要使用到基本的邮件 阅读全文
SQL Server 中断开连接到指定数据库的所有连接
2013-08-06 21:34 by BIWORK, 1801 阅读, 收藏, 编辑
摘要:
常用的情形是在部署测试数据库时需要通过SQL代码自动重新创建数据库,在删除的时候往往会发生错误,错误信息一般会指出目前有用户连接到这个数据库上,因此不能删除.实现的方式是通过查询指定数据库中活跃的 SPID, 然后一一删除.SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOUSE MASTERGOIF OBJECT_ID('dbo.USP_KillSPID','P')IS NOT NULLDROP PROCEDURE dbo.USP_KillSPIDGOCREATE PROCEDURE dbo.USP_KillSPID@D 阅读全文
各种示例数据库的地址链接
2013-08-03 22:01 by BIWORK, 610 阅读, 收藏, 编辑
摘要:
Exam 70-461/TSQL2012http://examples.oreilly.com/9780735666054-files/Exam 70-462http://examples.oreilly.com/9780735666078-files/ 阅读全文
Execution Plan 执行计划介绍
2013-04-11 22:59 by BIWORK, 9222 阅读, 收藏, 编辑
摘要:
后面的练习中需要下载 Demo 数据库, 有很多不同的版本, 可以根据个人需要下载. 下载地址 - http://msftdbprodsamples.codeplex.com/1. 什么是执行计划查询优化器对输入的 T-SQL 查询语句通过"计算"而选择出效率最高的一种执行方案,这个执行方案就是执行计划.执行计划可以告诉你这个查询将会被如何执行或者已经被如何执行过,可以通过执行计划看到 SQL 代码中那些效率比较低的地方.查看执行计划的方式我们可以通过图形化的界面,或者文本,或者XML格式查看,这样会比较方便理解执行计划要表达出来的意思.2. 当一个 Query 被提交后到 阅读全文
SQL Server 2012 中 SSAS 多维数据浏览器已经废除
2013-03-25 14:16 by BIWORK, 1179 阅读, 收藏, 编辑
摘要:
从SQL Server 2008 R2 升级到2012之后, 部署完Cube之后发现多维数据浏览器和以前在2008 BIDS里面的不一样, 只是单维的数据浏览, 包括连橡皮擦功能等等都没有了, 但是有一个新的 Excel 连接可以打开以查看多维数据.可参考说明-http://msdn.microsoft.com/zh-cn/library/ms143682.aspx 阅读全文
索引 - 唯一索引设计指南
2013-02-19 16:31 by BIWORK, 729 阅读, 收藏, 编辑
摘要:
唯一索引能够保证索引键中不包含重复的值, 从而使表中的每一行从某种方式上具有唯一性, 只有当唯一性是数据本身的特征时, 指定唯一索引才有意义. 例如, 如果您希望确保HumanResources.Employee表的NationalIDNumber列中的值唯一, 当主键为EmployeeID时, 可以为NationalIDNumber列创建一个 UNIQUE 约束. 如果用户尝试在该列中为多个雇员输入相同的值, 将显示错误消息并且不能输入重复的值.使用多列唯一索引, 索引能够保证索引键中值的每个组合都是唯一的. 例如, 如果为LastName、FirstName和MiddleName列的组合创 阅读全文
索引 - 非聚集索引设计指南
2013-02-19 16:19 by BIWORK, 328 阅读, 收藏, 编辑
摘要:
非聚集索引包含索引键值和指向表数据存储位置的行定位器.有关非聚集索引体系结构的详细信息, 请参阅非聚集索引结构.可以对表或索引视图创建多个非聚集索引. 通常, 设计非聚集索引是为改善经常使用的没有建立聚集索引的查询的性能.与使用书中索引的方式相似, 查询优化器在搜索数据值时, 先搜索非聚集索引以找到数据值在表中的位置, 然后直接从该位置检索数据.这使非聚集索引成为完全匹配查询的最佳选择, 因为索引包含说明查询所搜索的数据值在表中的精确位置的项.例如, 为了从 Person.Person 表中查询具有特定姓氏的人员, 查询优化器可能使用非聚集索引 IX_Person_LastName_First 阅读全文
索引 - 聚集索引设计指南
2013-02-19 16:02 by BIWORK, 409 阅读, 收藏, 编辑
摘要:
聚集索引基于数据行的键值在表内排序和存储这些数据行,每个表只能有一个聚集索引, 因为数据行本身只能按一个顺序存储. 有关聚集索引体系结构的详细信息, 请参阅聚集索引结构.每个表几乎都对列定义聚集索引来实现下列功能:可用于经常使用的查询.提供高度唯一性.创建 PRIMARY KEY 约束时, 将在列上自动创建唯一索引. 默认情况下, 此索引是聚集索引, 但是在创建约束时,可以指定创建非聚集索引.可用于范围查询.如果未使用 UNIQUE 属性创建聚集索引, 数据库引擎将向表自动添加一个 4 字节的uniqueifier列. 必要时, 数据库引擎将向行自动添加一个uniqueifier值以使每个键唯 阅读全文
索引 - 查询类型和索引
2013-02-19 15:14 by BIWORK, 957 阅读, 收藏, 编辑
摘要:
当您考虑是否要对列创建索引时, 请估计在查询中使用列的方式, 下表介绍了索引对其有用的查询类型.表中的示例基于 AdventureWorks2008R2 示例数据库, 在 SQL Server Management Studio 中运行这些示例时. 您可以通过显示实际的执行计划来查看查询优化器选择的索引. 有关详细信息, 请参阅如何显示实际执行计划.分类描述考虑的索引与特定值完全匹配搜索与特定值完全匹配的项. 其中, 查询使用WHERE子句指定列项. 例如:SELECTBusinessEntityID,JobTitleFROMHumanResources.EmployeeWHEREBusine 阅读全文
索引 - 索引排序顺序
2013-02-19 14:52 by BIWORK, 2697 阅读, 收藏, 编辑
摘要:
定义索引时, 应该考虑索引键列的数据是按升序还是按降序存储.升序是默认设置, 保持与 SQL Server 早期版本的兼容性.CREATE INDEX, CREATE TABLE 和 ALTER TABLE 语句的语法在索引和约束中的各列上支持关键字 ASC(升序)和 DESC(降序):当引用表的查询包含用以指定索引中键列的不同方向的 ORDER BY 子句时, 指定键值存储在该索引中的顺序很有用. 在这些情况下, 索引就无需在查询计划中使用 SORT 运算符. 因此, 使得查询更有效. 例如, Adventure Works Cycles 采购部门的买方不得不评估他们从供应商处购买的产品的质 阅读全文
索引 - 索引键的最大大小
2013-02-19 14:36 by BIWORK, 2982 阅读, 收藏, 编辑
摘要:
在设计包含许多键列或大型列的索引时, 计算索引键的大小以确保不超过最大索引键的大小. SQL Server 为所有索引键列的最大总大小保留 900 字节. 这排除了在非聚集索引的定义中包括的非键列.计算索引键的大小若要计算索引键的大小, 请按下列步骤执行操作。显示索引将依据的表列的属性, 可以使用sys.columns目录视图执行此操作.求索引键中将定义的每一列的长度之和. 例如, 以下语句聚合 Person.Address 表中指定列的 sys.columns 视图索引的 max_length 列. USE AdventureWorks2008R2;GOSELECT SUM(ma... 阅读全文
索引 - 常规索引设计指南
2013-02-19 14:04 by BIWORK, 343 阅读, 收藏, 编辑
摘要:
经验丰富的数据库管理员能够设计出好的索引集, 但是, 即使对于不特别复杂的数据库和工作负荷来说, 这项任务也十分复杂, 耗时和易于出错. 了解数据库, 查询和数据列的特征可以帮助您设计出最佳索引.数据库注意事项设计索引时, 应考虑以下数据库准则:一个表如果建有大量索引会影响 INSERT, UPDATE, DELETE 和 MERGE 语句的性能.因为当表中的数据更改时, 所有索引都须进行适当的调整.避免对经常更新的表进行过多的索引, 并且索引应保持较窄. 就是说,列要尽可能少.使用多个索引可以提高更新少而数据量大的查询的性能.大量索引可以提高不修改数据的查询(例如 SELECT 语句)的性能 阅读全文
索引 - 在文件组上放置索引
2013-02-19 13:37 by BIWORK, 593 阅读, 收藏, 编辑
摘要:
开发索引设计策略时, 应该考虑在与数据库相关联的文件组上放置索引, 仔细选择文件组或分区方案可以改进查询性能.默认情况下, 索引存储在基表所在的文件组上, 该索引即在该基表上创建, 非分区聚集索引和基表始终在同一个文件组中. 但是,您可以执行以下操作:为文件组而不是为基表的文件组创建非聚集索引.对要涵盖多个文件组的聚集和非聚集索引进行分区.通过删除聚集索引并在 DROP INDEX 语句的 MOVE TO 子句中指定新的文件组或分区方案, 或者在 CREATE INDEX 语句中使用 DROP_EXISTING 子句, 将表从一个文件组移至另一个文件组.通过对其他文件组创建非聚集索引, 可以在 阅读全文
索引 - 索引设计基础知识
2013-02-18 17:32 by BIWORK, 370 阅读, 收藏, 编辑
摘要:
索引设计不佳和缺少索引是提高数据库和应用程序性能的主要障碍, 设计高效的索引对于获得良好的数据库和应用程序性能极为重要. 为数据库及其工作负荷选择正确的索引是一项需要在查询速度与更新所需开销之间取得平衡的复杂任务. 如果索引较窄, 或者说索引关键字中只有很少的几列, 则需要的磁盘空间和维护开销都较少. 而另一方面, 宽索引可覆盖更多的查询. 您可能需要试验若干不同的设计, 才能找到最有效的索引. 可以添加, 修改和删除索引而不影响数据库架构或应用程序设计. 因此, 应试验多个不同的索引而无需犹豫.SQL Server 中的查询优化器可在大多数情况下可靠地选择最高效的索引, 总体索引设计策略应为 阅读全文
索引 - 索引基础知识
2013-02-18 16:54 by BIWORK, 458 阅读, 收藏, 编辑
摘要:
索引是与表或视图关联的磁盘上结构, 可以加快从表或视图中检索行的速度. 索引包含由表或视图中的一列或多列生成的键. 这些键存储在一个结构(B 树)中, 使 SQL Server 可以快速有效地查找与键值关联的行.表或视图可以包含以下类型的索引:聚集聚集索引根据数据行的键值在表或视图中排序和存储这些数据行, 索引定义中包含聚集索引列. 每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序.只有当表包含聚集索引时, 表中的数据行才按排序顺序存储. 如果表具有聚集索引, 则该表称为聚集表, 如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中.非聚集非聚集索引具有独立于数据行的结构, 非 阅读全文