随笔分类 - sql server
摘要:在这一层中,应用了sql server CTE,关于cte,在这里补充一下:CTE (Common Table Expression),是从sql server 2005开始支持的一种表达式,它是一种临时结果集,与派生表类似,仅在查询期间有效。与派生表不同的是,cte可以调用自身,从而实现递归。此外,还可以在同一查询中引用多次。下面是CTE的语法:[ WITH [ ,n ] ]::=expression_name [ ( column_name [ ,n ] ) ]AS( CTE_query_definition )至少有一个定位点成员和一个递归成员,当然,你可以定义多个定位点成员和递归成员,
阅读全文
摘要:让我们从这样一个示例开始说起,它在 SQL Server 2000 和 2005 中都能引起死锁。在本文中,我使用 SQL Server 2005 的最新 CTP(社区技术预览,Community Technology Preview)版本,SQL Server 2005 Beta 2(7 月发布)也同样适用。如果您没有 Beta 2 或最新的 CTP 版本,请下载 SQL Server 2005 Express 的最新版本,用它来进行试验。 可能发生的死锁情况有很多,[参阅http://msdn.microsoft.com/library/default.asp?url=/library/e
阅读全文
摘要:解决数据库并发读取错乱的途径之一就是使用事务进行操作,并且设置相应的事务隔离级别,现在就解释一下SQL Server的四种隔离级别。SQL Server的四种隔离级别知识点整理,特别制作了流程图,方便以后查看!SET TRANSACTION ISOLATION LEVEL{READ UNCOMMITTED| READ COMMITTED| REPEATABLE READ| SERIALIZABLE}一、未提交读READ UNCOMMITTED(脏读)意义:包含未提交数据的读。例如,在多用户环境下,用户B更改了某行。用户A在用户B提交更改之前读取已更改的行。如果此时用户B再回滚更改,则用户A便读
阅读全文
摘要:锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性。 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象。即如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。这些问题包括:丢失更新、脏读、不可重复读和幻觉读:1.当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。例如,两个编辑人员制作了同一文档的电子复本。每个编辑人员独立地更改其复本,然后保存更改后的复本,这样就覆盖了原始文档。最后保存
阅读全文
摘要:临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。 例如,如果创建了 employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表 #employees,则仅会话
阅读全文
摘要:一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。CREATEfunctionGet_StrArrayLength(@strvarchar(1024),--要分割的字符串@splitvarchar(10)--分隔符号)returnsintasbegindeclare@locationintdeclare@startintdeclare@lengthintset@str=ltrim(rtrim(@str))set@location=charindex(@split,@str)set@length=1while@locatio
阅读全文
摘要:SQL时间段查询 ACCESS的话 select * from table where date1<#2008-1-20# and date2>#2007-8-30# MYSQL的话 select * from table where date1<'2008-1-20' and date2>'2007-3-30' 也可以 select * from table where date1 between '2008-1-20' and '2007-3-30' 其中date1,date2都是日期类型的字段 sQL
阅读全文
摘要:针对数据库数据在UI界面上的分页是老生常谈的问题了,网上很容易找到各种“通用存储过程”代码,而且有些还定制查询条件,看上去使用很方便。笔者打算通过本文也来简单谈一下基于SQL SERVER 2000的分页存储过程,同时谈谈SQL SERVER 2005下分页存储过程的演进。 在进行基于UI显示的数据分页时,常见的数据提取方式主要有两种。第一种是从数据库提取所有数据然后在系统应用程序层进行数据分页,显示当前页数据。第二种分页方式为从数据库取出需要显示的一页数据显示在UI界面上。以下是笔者对两种实现方式所做的优缺点比较,针对应用程序编写,笔者以.NET技术平台为例。类别SQL语句代码编写设计时性能
阅读全文
摘要:SQL Server分页查询是我们经常会用到的功能,其实现方法也有很多,本文的几种分页方法摘自《SQL Server2005性能调优》一书。希望对您学习SQL Server分页查询方面能有所帮助。用以下脚本生成测试数据:CREATETABLETRANS_TABLE( MYIDINTIDENTITY(1,1)NOTNULLPRIMARYKEY, MYDESCVARCHAR(10), MYDATEDATETIME, MYGROUPIDINT) DECLARE@IINTSET@I=0WHILE@I<1000000 BEGININSERTINTOTRANS_TABLE SELECTCHAR(AS
阅读全文
摘要:第14章 Reporting Services我所写的书中有一些章节重叠了入门篇和高级篇的部分内容。虽然初级和高级内容应该分得很清,但那其实仅限于理想情况:即人人都以同种方式、按同样顺序获得经验,并且对初级和高级的定义有统一的认识。本章中就有一些重叠的内容,已经阅读过入门篇的读者会注意到这一点。对于Reporting Services而言,这样做的原因是多方面的,主要的两个原因是:有些人只是出于控制个人报表的目的而进行数据库开发(在这种情况下,他们几乎都是直接从Reporting Services开始学起,然后学习用于支持报表中的数据的查询)。而还有一些人是数据库"专家",
阅读全文
摘要:Integrartion Services 包实际上就是一个对象属性的集合,在前面我们开发的所有 Integration Services包,其中的变量、属性,比如:数据库链接、同步文件目录等,我们都直接在包中用一个常量的方式,赋给这些变量或者属性,这就给这个包的发布与移置,带来很大的麻烦,比如我们在开发环境中开发包的时候,所有变量与属性都是按照开发环境来来进行设置,开发完成后,要将这个包部署到生产环境中,DB连接啊、同步目录啊等都会发生变化,以前的做法:在新环境中打开包,重新设置一遍这些变量或者属性的值,才可以正常运行。从自Integration Services 2005 以来,多了一个[
阅读全文
摘要:容器是Integration Services 包中非常重要的一部分功能,它可以对控制流中的任务进行直观的划分与组织,使包的结构简明扼要、易于管理、易于维护。 在Integration Services 中,主要有以下三种类型的容器: 序列容器(SequenceContainers)、For 循环、Foreach 循环。下面我们将一一介绍这三种容器的使用方法。 (一)、序列容器(SequenceContainers)。 序列容器是一种十分简单,但使用非常广泛的容器,它可以对控制流的任务流组件进行结构化处理,把一些业务相关的任务组件,放到一个序列容器中,使整个包看起来更加整洁、美观,就如同我们家
阅读全文
摘要:变量和表达式变量,作为程序员的我们,是一个多么熟悉的概念,从开始学习编程的第一天起,就要了解什么是变量?如何定义一个变量?变量的使用范围等。现在还有必要在这里大费口舌来讨论“变量”吗?不错,我们今天谈的变量,也脱离不了这个范畴:如何定义一个变量?如何使用变量?变量的使用范围等。但是在ETL的发展过程中,从以前Sql Server 97、Sql Server 2000的DTS到后来的Sql server Integration Services 2005 ,再到现在的Sql Server Integration Services 2008,变量也发生了巨大的变化,其作用也变得越来越重要了。SSI
阅读全文
摘要:概要 俗话说:“十年磨一剑”,Microsoft 通过5年时间的精心打造,于2005年浓重推出Sql Server 2005,这是自SQL Server 2000 以后的又一旷世之作。这套企业级的数据库解决方案,主要包含了以下几个方面:数据库引擎服务、数据挖掘、Analysis Services、Integration Services、Reporting Services 这几个方面,其中Integration Services (即SSIS),就是他们之间的中转站、纽带,将各种源头的数据,经ETL到数据仓库,建立多维数据集,然后进行分析、挖掘并将结果通过Reporting Services
阅读全文
摘要:自定义函数用户定义自定义函数像内置函数一样返回标量值,也可以将结果集用表格变量返回用户自定义函数的类型:标量函数:返回一个标量值表格值函数{内联表格值函数、多表格值函数}:返回行集(即返回多个值)1、标量函数Create function 函数名(参数)Returns 返回值数据类型[with {Encryption | Schemabinding }][as]beginSQL语句(必须有return 变量或值)End Schemabinding :将函数绑定到它引用的对象上(注:函数一旦绑定,则不能删除、修改,除非删除绑定)Create function AvgResult(@scode v
阅读全文
摘要:http://tech.it168.com/zt/sql2008/index.html
阅读全文
摘要:故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因。 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表甚至有上千万行数据,测试团队开始在生产数据库上测试,发现订单提交过程需要花5分钟时间,但在网站上线前的测试中,提交一次订单只需要2/3秒。 类似这种故事在世界各个角落每天都会上演,几乎每个开发人员在其开发生涯中都会遇到这种
阅读全文