Welcome 微信登录

首页 / 数据库 / SQLServer

SQL Server误区:SQL Server中存在真正的“事务嵌套”

SQL Server误区:SQL Server中存在真正的“事务嵌套”

SQL Server误区:SQL Server中存在真正的“事务嵌套”2015-02-08误区 #26: SQL Server中存在真正的“事务嵌套”错误嵌套事务可不会像其语法表现的那样看起来允许事务嵌套。我真不知道为什么有人会这样写代码,我唯一能够想到的就是某个哥们对SQL Server社区嗤之以鼻然后写了这样的代码说:“玩玩你们”。让我更详细的解释一下,SQL Server允许你在一个事务中开启嵌套另一个...
SQL Server误区:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB

SQL Server误区:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB

SQL Server误区:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB2015-02-08误区 #27:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB错误乍一看,由于BACKUP WITH CHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下:由SQL Server 2000或是更早版本升上来的数据库page checksu...
SQL Server误区:有关大容量事务日志恢复模式的误区

SQL Server误区:有关大容量事务日志恢复模式的误区

SQL Server误区:有关大容量事务日志恢复模式的误区2015-02-08误区 #28:有关大容量事务日志恢复模式的几个误区28 a)常见的DML操作可以被“最小记录日志”不是。在大容量事务日志恢复模式下只有一小部分批量操作可以被“最小记录日志”,这类操作的列表可以在找到。这是适合SQL Server 2008的列表,对于不同的SQL Server版本,请确保查看正确的列表。28 b)使用大容量事务日志恢...
SQL Server误区:有关堆碎片的误区

SQL Server误区:有关堆碎片的误区

SQL Server误区:有关堆碎片的误区2015-02-08误区 #29:可以通过对堆建聚集索引再DROP后进行堆上的碎片整理Nooooooooooooo!!!对堆建聚集索引再DROP在我看来是除了收缩数据库之外最2的事了。如果你通过sys.dm_db_index_physical_stats(或是老版本的DBCC SHOWCONTIG)看到堆上有碎片,绝对不要通过建立聚集索引再删除聚集索引来整理堆碎片。好的做法应该是建立聚集索引之后不再删除,已经有非常...
SQL Server误区:有关备份的30个误区

SQL Server误区:有关备份的30个误区

SQL Server误区:有关备份的30个误区2015-02-08误区 #30:有关备份的30个误区全是错的在开始有关备份的误区之前,如果你对备份的基础没有了解,请看之前我在TechNet Magazine的文章:。30-01)备份操作会导致阻塞不,备份不会导致对用户对象加锁,虽然备份对IO系统的负担导致看起来阻塞了,但实际上不会。唯一的特例是当备份包含到那些最小日志操作涉及到的数据区需要被加锁时,这个操作会阻塞CheckPoint,但DML操作永远不会受...
T-SQL查询进阶:深入理解子查询

T-SQL查询进阶:深入理解子查询

T-SQL查询进阶:深入理解子查询2015-02-08引言SQL有着非常强大且灵活的查询方式,而多表连接操作往往也可以用子查询进行替代,本篇文章将会讲述子查询的方方面面。简介子查询本质上是嵌套进其他SELECT,UPDATE,INSERT,DELETE语句的一个被限制的SELECT语句,在子查询中,只有下面几个子句可以使用SELECT子句(必须)FROM子句(必选)WHERE子句(可选)GROUP BY(可选)HAVING(可选)ORDER BY(只有在T...
T-SQL查询进阶:基于列的逻辑表达式

T-SQL查询进阶:基于列的逻辑表达式

T-SQL查询进阶:基于列的逻辑表达式2015-02-08引言T-SQL不仅仅是一个用于查询数据库的语言,还是一个可以对数据进行操作的语言。基于列的CASE表达式就是其中一种,不像其他查询语句可以互相替代(比如用子查询实现的查询也可以使用Join实现),CASE表达式在控制基于列的逻辑大部分是无法替代的。下面文中会详细讲解CASE表达式。简介基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHE...
T-SQL查询进阶:流程控制语句

T-SQL查询进阶:流程控制语句

T-SQL查询进阶:流程控制语句2015-02-08概述和其他高级语言一样,T-SQL中也有用于控制流程的语句。T-SQL中的流程控制语句进一步扩展了T-SQL的力量……使得大部分业务逻辑可以在数据库层面进行。但很多人对T-SQL中的流程控制语句并没有系统的了解,本篇文章会系统的对T-SQL语句中的流程控制语句进行系统讲解。基本概念在没有流程控制语句的情况下,T-SQL语句是按照从上到下的顺序逐个执行:使用流程控制语句可以让开发...
T-SQL查询进阶:变量

T-SQL查询进阶:变量

T-SQL查询进阶:变量2015-02-08概述变量对于一种语言是必不可少的一部分,当然,对于T-SQL来讲也是一样。在简单查询中,往往很少用到变量,但无论对于复杂的查询或存储过程中,变量都是必不可少的一部分.变量的种类在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable).1.全局变量是由系统定义的,在整个SQL SERVER实例内都能访问到的变量.全局变量以@@作为第一个字符,用户只能...
T-SQL查询进阶:数据集之间的运算

T-SQL查询进阶:数据集之间的运算

T-SQL查询进阶:数据集之间的运算2015-02-12概述关系数据库的起源起源于数学中的集合概念.所以集合与集合之间,也同样继承了数学集合之间的运算.而对于在关系数据库中,常常用于两个数据集中并没有直接的关系数据库中的“关系”,比如外键.但两个数据集会有间接的关系,比如两届比赛,参加比赛人员集合之间会有间接关系.数据集运算的种类在T-SQL中,关系运算实际上可以分为四类,首先看我们举例子用的表:这里的例子表分别为两个不同会议参加的...
T-SQL查询进阶-:快速理解游标

T-SQL查询进阶-:快速理解游标

T-SQL查询进阶-:快速理解游标2015-02-12概述游标是邪恶的!在关系数据库中,我们对于查询的思考是面向集合的。而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服。正常面向集合的思维方式是:而对于游标来说:这也是为什么游标是邪恶的,它会使开发人员变懒,懒得去想用面向集合的查询方式实现某些功能.同样的,在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量&hell...
T-SQL查询进阶:视图详解

T-SQL查询进阶:视图详解

T-SQL查询进阶:视图详解2015-02-12简介 视图可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata.视图简单的理解如下:通过视图,客户端不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。为什么要使用视图(View)从而我们不难发现,使用视图将会得到如下好处:视图隐藏了底层的表结构...
T-SQL查询进阶:详解公用表表达式(CTE)

T-SQL查询进阶:详解公用表表达式(CTE)

T-SQL查询进阶:详解公用表表达式(CTE)2015-02-12简介对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集仅仅需要在存储过程或是用户自定义函数中使用一次的时候,使用视图就显得有些奢侈了.公用表表达式(Common Table Expression)是SQL SERVER 2005版本之后引入的一个特性...
详解T-SQL的GROUP BY GROUPING SETS

详解T-SQL的GROUP BY GROUPING SETS

详解T-SQL的GROUP BY GROUPING SETS2015-02-12最近遇到一个情况,需要在内网系统中出一个统计报表。需要根据不同条件使用多个group by语句.需要将所有聚合的数据进行UNION操作来完成不同维度的统计查看.直到发现在SQL SERVER 2008之后引入了GROUPING SETS这个对于GROUP BY的增强后,上面的需求实现起来就简单多了,下面我用AdventureWork中的表作为DEMO来解释一下GROUPING ...
使用T-SQL的好习惯

使用T-SQL的好习惯

使用T-SQL的好习惯2015-02-121.在生产环境中不要出现Select *这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多。但我这里还是要说一下。不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计。更主要的原因来自以下两点:扩展方面的问题造成额外的书签查找或是由查找变为扫描扩展方面的问题是当表中添加一个列时,Select *会把这一列也囊括进去,从而造成上面的第二种问题。而...
关于存储过程的一个小问题

关于存储过程的一个小问题

关于存储过程的一个小问题2015-02-12今天一下午我就用来写这个存储过程了。遇到了好几个问题,现在解决了,就晒一晒,看看各位大牛有没有啥更好的办法,算是抛砖引玉吧。。。这个存储过程是我用来搜索拥有某种技能的用户的存储过程create PROCEDURE [dbo].[selectuserbypageandsearch]@categoryid int,@sex int,@skillid int,@ishaved int,@pageindex int,@p...
<< 61 62 63 64 65 66 67 68 69 70 >>