
SQL Server 2008 深入应用
文章平均质量分 88
SQL Server 2008/2012/2014中的一些特性总结及分享。
downmoon
浙江大学(项目管理方向)工程硕士,PMP,微软MVP获得者。十年以上.NET、架构设计、数据库开发经验,十年以上项目管理经验、从事多个垂直行业、零售流通领域多年。欢迎交流。
展开
-
在SQL Server 2012中实现CDC for Oracle
在上篇在SSIS 2012中使用CDC(数据变更捕获)中,介绍了如何在SSIS 2012中使用CDC,本文在此基础上介绍,如何通过Attunity提供的Change Data Capture Designer for Oracle实现对Oracle数据表的变更捕获。原创 2014-04-30 21:14:45 · 7794 阅读 · 2 评论 -
在SSIS 2012中使用CDC(数据变更捕获)
最新项目稍有空隙,开始研究SQL Server 2012和2014的一些BI特性,参照(Matt)的一个示例,我们开始体验SSIS中的CDC(Change Data Capture,变更数据捕获)。注:如果需要了解关于SQL Server 2008中的CDC,请看这里http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html“),本文假定读者对CDC的工作方式已有所了解。^_^。原创 2014-04-29 20:40:12 · 10126 阅读 · 2 评论 -
SQL Server 2012新特性(1)T-SQL操作FileTable目录实例
在SQL Server 2008提供FileStream,以借助Windows系统本身的API来强化SQL Server对于非结构化数据的支持后,SQL Server 2012更是推出了像Contained Database、FileTable等令人期待的新功能。对于FileTable的功能和特性,在此无需赘述,本文主要针对FileTable的T-SQL操作目录做一个实例演示。原创 2014-04-23 17:04:03 · 8856 阅读 · 0 评论 -
SQL Server带列名导出到Excel(Export to CSV with headers)的几个思路
SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引今天在项目中遇到一个问题,需要从SQL Server导出表到Excel,但需要带列名。尝试了几种方法,并小结如下:假定表如下:USE testDb2GOIF NOT OBJECT_ID('Demo_A') IS NULLDROP TABLE [Demo_A]/****** Ob...原创 2012-05-04 16:33:35 · 20541 阅读 · 8 评论 -
SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引
SQL Server 2008中SQL应用系列及BI学习笔记系列,欢迎与邀月交流。3w@live.cn◆0、SQL应用系列1、SQL Server 2008中SQL增强之一:Values新用途2、SQL Server 2008中SQL增强之二:Top新用途3、SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)4、SQL Serve原创 2011-03-10 21:12:00 · 21801 阅读 · 7 评论 -
SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试
SQL Server 2008中SQL应用系列--目录索引前些天看到一篇文章《SQL Server 2012 - Server side paging demo using OFFSET/FETCH NEXT》,原文地址。作者在文中称,要SQL Server 2012使用OFFSET/FETCH NEXT分页,比SQL Server 2005/2008中的RowNumber()有显著改进。今天特地原创 2012-04-19 03:27:41 · 4594 阅读 · 1 评论 -
SQL Server 2012中快速插入批量数据的示例及疑惑
SQL Server 2008中SQL应用系列--目录索引今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以供有兴趣的同学参考。附:我的测试环境为:SQL Server 2012,命名实例Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86) Feb 10 2原创 2012-04-19 00:47:13 · 17237 阅读 · 17 评论 -
浅谈SQL Server 2008中的Hints(提示)
SQL Server 2008中SQL应用系列--目录索引 SQL Server的系统查询过程负责在SELECT查询执行时候产生查询执行计划。SQL Server会“智能”地选择一个高效计划来取代低效的一个。大多数时候,SQL Server会把这份工作干得很棒。但正如有些人所担忧的,SQL Server并不是万能的,有时候,我们通过查询执行计划、表统计信息、支撑的索引及其他因素,研究性能之后,发原创 2012-04-13 16:02:30 · 4818 阅读 · 10 评论 -
SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY
SQL Server 2008中SQL应用系列--目录索引 昨天有人在群里讨论SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY,在些作个标记和小结。 其实MSDN对此有官方解释:这三个函数都返回最后生成的标识值。 但是,上述每个函数中定义的“最后”的作用域和会话有所不同。 1、IDENT_CURRENT 返回为某原创 2012-04-12 17:33:58 · 9790 阅读 · 0 评论 -
SQL Server 2005/2008/2012中应用分布式分区视图
SQL Server 2008中SQL应用系列--目录索引 自2000版本起,SQL Server企业版中引入分布式分区视图,允许你为分布在不同的SQL 实例的两个或多个水平分区表创建视图。 简要步骤如下:根据Check约束中定义的一组值把大表分割成更小的一些表。Check约束确保每个小表保存着不能保存在其他表的唯一数据。然后使用Union All创建分布式分区视图,把所有这些小表联结成单独的原创 2012-04-12 02:11:23 · 7314 阅读 · 3 评论 -
SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪
SQL Server 2008中SQL应用系列--目录索引 本文主要介绍SQL Server中记录数据变更的四个方法:触发器、Output子句、变更数据捕获(Change Data Capture 即CDC)功能、同步更改跟踪。其中后两个为SQL Server 2008所新增。一、触发器 在SQL Server的早期版本中,如果要记录某个表或视图的Insert/Update/Delete操作,原创 2012-04-10 08:20:54 · 9150 阅读 · 4 评论 -
SQL Server 2005/2008/2012中事务回滚的一个充分条件
SQL Server 2008中SQL应用系列--目录索引 在SQL Server 2000中,我们一般使用RaiseError(http://msdn.microsoft.com/zh-cn/library/ms177497.aspx)来抛出错误交给应用程序来处理。看MSDN示例(http://msdn.microsoft.com/zh-cn/library/aa238452%28v=sql.原创 2012-04-08 01:39:26 · 11059 阅读 · 3 评论 -
Sql Server 2008中存储过程传入表值参数
SQL Server 2008中SQL应用系列--目录索引经常我们会遇到需要一次往数据表中插入多行数据。此时,最简单的莫过于调用存储过程。比如目标表如下:USE testDb2GOIF NOT OBJECT_ID('tb_Demo_MultiRowsInsert') IS NULLDROP TABLE [tb_Demo_MultiRowsInsert]/****** Object: T原创 2012-04-06 13:10:10 · 22986 阅读 · 1 评论 -
SQL Server 2008中增强的汇总技巧
SQL Server 2008中SQL应用系列--目录索引SQL Server 2008中对汇总有明显的增强,有点像Oracle的语法了。请看下面五个例子:假定场景如下:某几位员工在不同时间参加了不同的项目,获取了相应的收入,现在需要按各种分类进行统计。基本表如下:USE testDb2GOIF NOT OBJECT_ID('tb_Income') IS NULLDROP TABLE [t原创 2012-04-06 01:22:18 · 9735 阅读 · 12 评论 -
SQL Server 2008中的Pivot和UnPivot
SQL Server 2008中SQL应用系列--目录索引今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。官方示例:http://msdn.microsoft.com/zh-cn/library/ms177410%28v=sql.105%29.aspx首先看PIVOT示例:基本表数据:IF NOT OBJECT_ID('原创 2012-04-05 18:56:53 · 19850 阅读 · 0 评论 -
一个最简单的IIS日志导入示例(含代码)
一个最简单的IIS日志导入示例。示例源码在本文末尾处。一、日志格式。注意:默认前四行可以过滤默认IIS日志列分隔符为空格示例代码下载推荐一个强大的工具:不用SSIS也可以处理IIS loghttp://blog.youkuaiyun.com/downmoon/archive/2009/09/02/4509513.aspx 邀月注:本文版权由邀月和优快云共同所有,转载请注明出处。助人等于自助! 3w@li原创 2011-05-03 22:35:00 · 3084 阅读 · 0 评论 -
SQL2005/2008中的CTE应用--递归查询
微软从SQl2005起引入了CTE(Common Table Expression)以强化T-SQL。这是一个类似于非持久视图的好东东。按照MSDN介绍1、公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同原创 2009-10-23 01:37:00 · 5595 阅读 · 1 评论 -
SQL Server 2008中原生的分层数据类型:hierarchyid
SQL Server 2008中SQL应用系列--目录索引 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归。在SQL server 2005中,我们可以使用CTE,当然,好的数据结构设计可以避免你使用CTE,请看这里:http://blog.youkuaiyun.com/downmoon/archive/2009/10/23/4715814.aspx如果你是一个数据库设计新手,那么在s原创 2011-05-03 14:52:00 · 3868 阅读 · 0 评论 -
一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
SQL Server 2008中SQL应用系列--目录索引 有人提问如下:这个是Excel的,比如是test.xls欠费年份 欠费开始月份 欠费结束月份 应缴金额(月租) 2001 9 12 94.4 2008 5 12 88.原创 2011-05-02 01:00:00 · 3376 阅读 · 6 评论 -
结合SQL Server全文检索对Word内容进行检索的三个方案
导读:除了利用office提供的API对word文档内容进行检索外,本文简要总结如何结合SQL Server的全文检索技术对Word文件的内容进行检索的三个方案。一、结合Windows索引服务进行全文检索方案摘要: 1. 改变文件存储时的文件名;2. 配置索引服务器,并将索引服务器与MS SQL Server关联。3. 修改SQL语句,将进行全文查询语句的内容加入查询条件中一个详细的实例,参考这里原创 2011-04-21 23:07:00 · 5321 阅读 · 1 评论 -
SQL Server 2008中新增的Service Broker事件通知
SQL Server 2008中SQL应用系列--目录索引Service Broker的事件通知 事件通知是集成到Service Broker的功能,使用它可以在SQL Server实例中异步捕捉SQL事件,将事件消息路由到特定的队列中。只需最小的系统开销,就可以跟踪发生在SQL Server实例中的事件,比如用户登录、存储过程编译、权限修改、对象处理(例如对数据库、程序集、角色或表的Creat原创 2011-05-06 11:00:00 · 3887 阅读 · 2 评论 -
SQL Server 2008中远程Service Broker实现
SQL Server 2008中SQL应用系列--目录索引 上文SQL Server 2008中Service Broker基础应用(上)、SQL Server 2008中Service Broker基础应用(下)演示了在同一个SQL Server实例的不同数据库之间实现Service Broker,其实,更常见的是在不同的SQL Server实例之间进行通信,本文将通过实例演示如何进行Servi原创 2011-05-05 16:33:00 · 4270 阅读 · 1 评论 -
SQL Server 2008中Service Broker基础应用(下 )
导读:在上篇《SQL Server 2008中Service Broker基础应用(上)》中,简要介绍了Service Broker的一般步骤,本文继续介绍Service Broker的设置会话优先级,存储过程中实现。原创 2011-04-12 10:24:00 · 6159 阅读 · 3 评论 -
SQL Server 2008中Service Broker基础应用(上)
SQL Server 2008中SQL应用系列--目录索引 导读:本文主要涉及Service Broker的基本概念及建立一个Service Broker应用程序的基本步骤。一、前言: Service Broker为SQL Server提供消息队列,这提供了从数据库中发送异步事务性消息队列的方法。Service Broker消息可以保证以适当的顺序或原始的发送顺序不重复地一次性接收。并且原创 2011-04-05 16:48:00 · 5691 阅读 · 2 评论 -
SQL Server 2008中的代码安全(八):透明加密(TDE)
SQL Server 2008引入透明数据加密(Transparent Data Encryption),即TDE,它允许你完全无需修改应用程序代码而对整个数据库加密。当一个用户数据库可用且已启用TDE时,在写入到磁盘时在页级实现加密。在数据页读入内存时解密。如果数据库文件或数据库备份被盗,没有用来加密的原始证书将无法访问。这几乎是SQL Server2008安全选项中最激动人心的功能了,有了它,原创 2011-03-17 15:56:00 · 5634 阅读 · 0 评论 -
SQL Server 2008中的代码安全(七):证书加密
SQL Server 2008中SQL应用系列--目录索引证书可以在数据库中加密和解密数据。证书包含密钥对、关于证书拥有者的信息、证书可用的开始和结束过期日期。证书同时包含公钥和密钥,前者用来加密,后者解密。SQL Server可以生成它自己的证书,也可以从外部文件或程序集载入。因为可以备份然后从文件中载入它们,证书比非对称密钥更易于移植,而非对称密钥却做不到。这意味着可以在数据库中方便地重用同一原创 2011-03-16 08:06:00 · 4259 阅读 · 7 评论 -
SQL Server 2008中的代码安全(六):对称密钥加密
SQL Server 2008中SQL应用系列--目录索引 证书和非对称密钥使用数据库级的内部公钥加密数据,并且使用数据库级内部私钥解密数据。而对称密钥相对简单,它们包含一个同时用来加密和解密的密钥。困此,使用对称密钥加密数据更快,并且用在大数据时更加合适。尽管复杂度是考虑使用它的因素,但它仍然是一个很好的加密数据的选择。 我们看一组例子:示例一、创建对称密钥对称密钥的特性是:在数据库会话中使用它原创 2011-03-15 11:30:00 · 4306 阅读 · 1 评论 -
SQL Server 2008中的代码安全(五):非对称密钥加密
SQL Server 2008中SQL应用系列--目录索引 非对称密钥包含数据库级的内部公钥和私钥,它可以用来加密和解密SQL Server数据库中的数据,它可以从外部文件或程序集中导入,也可以在SQL Server数据库中生成。它不像证书,不可以备份到文件。这意味着一旦在SQL Server中创建了它,没有非常简单的方法在其他用户数据库中重用相同的密钥。非对称密钥对于数据库加密属于高安全选原创 2011-03-14 08:07:00 · 3508 阅读 · 4 评论 -
SQL Server 2008中的代码安全(四):主密钥
SQL Server 2008中SQL应用系列--目录索引在SQL Server中的加密由层次结构形式进行处理以提供多级别的安全。SQL Server包含两个用于加密数据的密钥类型。如下图:1、服务器主密钥(Service Master Key),位于层次结构的最顶端,并且在安装SQL Server时自动创建,用于加密系统数据、链接的服务器登录名以及数据库主密钥。在第一次通过SQL Server使原创 2011-03-10 14:31:00 · 4027 阅读 · 7 评论 -
SQL Server 2008中的代码安全(三):通过PassPhrase加密
SQL Server 2008中SQL应用系列--目录索引导读:本文主要涉及EncryptByPassPhrase和DecryptByPassPhrase函数进行通行短语(PassPhrase)加密。前言: 在SQL Server 2005和SQL Server 2008之前。如果希望加密敏感数据,如财务信息、工资或身份证号,必须借助外部应用程序或算法。SQL Server 2005引入原创 2011-03-07 10:08:00 · 3220 阅读 · 2 评论 -
SQL Server 2008中的代码安全(二):DDL触发器与登录触发器
SQL Server 2008中SQL应用系列--目录索引本文主要 涉及DDL触发器和登录触发器的应用实例。MicrosoftSQL Server 提供两种主要机制来强制使用业务规则和数据完整性:约束和触发器。触发器为特殊类型的存储过程,可在执行语言事件时自动生效。SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。1、当数据库中发生数据操作语言 (DML)原创 2011-03-03 08:10:00 · 3277 阅读 · 1 评论 -
SQL Server 2008中的代码安全(一):存储过程加密与安全上下文
SQL Server 2008中SQL应用系列--目录索引最近对SQL Server 2008的安全入门略作小结,以作备忘。本文涉及两个应用:存储过程加密和安全上下文。存储过程加密其实,用了这十多年的SQL server,我已经成了存储过程的忠实拥趸。在直接使用SQL语句还是存储过程来处理业务逻辑时,我基本会毫不犹豫地选择后者。理由如下:1、使用存储过程,至少在防非法注入(inject)方面提供更原创 2011-02-28 14:44:00 · 6098 阅读 · 18 评论 -
SQL Server 2008中SQL应用之-“死锁(Deadlocking)”
SQL Server 2008中SQL应用系列--目录索引 当一个用户会话(会话1)已经锁定了一个资源,而另一个会话(会话2)想要修改该资源,并且会话2也锁定了会话1想要修改的资源时,就会出现“死锁”(deadlocking)。在另一方释放资源前,会话1和会话2都不可能继续。所以,SQL Server会选择死锁中的一个会话作为“死锁牺牲品”。注意:死锁牺牲品的会话会被杀死,事务会被回滚。注意:死锁原创 2011-02-27 18:16:00 · 5237 阅读 · 10 评论 -
SQL Server 2008中SQL应用之-“阻塞(Blocking)”
SQL Server 2008中SQL应用系列--目录索引 当一个数据库会话中的事务正锁定一个或多个其他会话事务想要读取或修改的资源时,会产生阻塞(Blocking)。通常短时间的阻塞没有问题,且是较忙的应用程序所需要的。然而,设计糟糕的应用程序会导致长时间的阻塞,这就不必要地锁定了资源,而且阻塞了其他会话读取和更新它们。在SQL Server中,一个阻塞的进程会无限期地保持阻塞,或者直到它原创 2011-02-18 15:57:00 · 2905 阅读 · 0 评论 -
SQL Server 2008中SQL应用之-“锁定(locking)”
SQL Server 2008中SQL应用系列--目录索引一、锁的基本概念:锁定(Locking)是一个关系型数据库系统的常规和必要的一部分,它防止对相同数据作 并发更新 或在更新过程中查看数据, 从而保证被更新数据的完整性。它也能防止用户读取正在被修改的数据 。Sql Server动态地管理锁定,然而,还是很有必要 了解Transact- SQL查询如何影响SQL Server中的锁定。在此,原创 2011-02-18 12:45:00 · 3401 阅读 · 0 评论 -
SQL Server 2008中通过DBCC OPENTRAN和会话查询事务
SQL Server 2008中SQL应用系列--目录索引无论是有意无意,如果事务在数据库中保持打开,则它会阻塞其他进程对修改后的数据进行操作。同样,对事务日志进行备份也只会截断不活动事务的那部分事务日志,所以打开的事务会导致日志变多(甚至达到物理限制),直到事务被提交或回滚。要找到最早的活动事务,可以使用DBCC OPENTRAN命令。详细用法见MSDN:http://msdn.microsof原创 2010-12-24 15:11:00 · 4315 阅读 · 0 评论 -
SQL Server 2008中SQL之WaitFor
SQL Server 2008中SQL应用系列--目录索引在SQL Server 2005以上版本中,在一个增强的WaitFor命令,其作用可以和一个job相当。但使用更加简捷。看MSDN:http://msdn.microsoft.com/zh-cn/library/ms187331.aspx语法为:WAITFOR{ DELAY 'time_to_pass' | TIME 'tim原创 2010-12-07 16:57:00 · 2888 阅读 · 0 评论 -
SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
SQL Server 2008中SQL应用系列--目录索引SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx功能:根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。我们原创 2010-10-17 21:56:00 · 10702 阅读 · 15 评论 -
SQL Server 2008中SQL增强之二:Top新用途
SQL Server 2008中SQL应用系列--目录索引一、TOP替代Set RowCount在SQL Server 2005之前的传统SQL语句中,top语句是不支持局部变量的。见http://blog.youkuaiyun.com/downmoon/archive/2006/04/12/660557.aspx此时可以使用Set RowCount,但是在SQL Server 2005/2008中,TOP通原创 2010-10-12 22:26:00 · 7006 阅读 · 0 评论 -
SQL Server 2008中SQL增强之一:Values新用途
SQL Server 2008中SQL应用系列--目录索引SQL Server 2008中新增功能:可以使用单个Insert命令插入多行。 Create table Demo_Values(PKID int not null identity(1,1) primary key,DName Nvarchar(20) null,DCode NVarchar(30) null,DDate dat原创 2010-10-12 20:53:00 · 7389 阅读 · 2 评论