Welcome 微信登录

首页 / 数据库 / SQLServer

SQL Server误区30日谈 第24天 26个有关还原(Restore)的误区

SQL Server误区30日谈 第24天 26个有关还原(Restore)的误区

本系列文章一直所没有触及的就是有关”还原(Restore)”的话题,因为一旦牵扯到这个话题就会涉及大量的误区,多到我无法通过一篇文章说完的地步。事实上,我希望用字母表的顺序为每一个误区进行编号,希望你看了不要昏昏欲睡。下面开始揭穿这26个误区。误区 #24: 26个有关还原(Restore)的误区都是错误的24 a)可以通过WITH STOPAT参数在完整备份和差异备份的基础上还原到特定时间点当然不能。虽然这个语法看上去貌似能的样子,但这个语法的最佳实践是...
SQL Server误区30日谈 第25天 有关填充因子的误区

SQL Server误区30日谈 第25天 有关填充因子的误区

误区 #25:多个有关填充因子的误区都是错误的25a) 填充因子是一直存在的不是的,通过Books Online可以看到(译者:我在新版的BOL没有找到这句话):重要: 填充因子仅仅在索引创建或重建时生效,SQL Server存储引擎并不会一直保证页内的空闲值和填充因子保持一致。如果为了保证页内的空余值和指定的填充因子保持一直那么填充因子就会失去意义。因为这时页即使不满也需要进行分页。25 b)填充因子0和100是不同的错误,由BOL的一句话可以看到填充因...
SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”

SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”

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

SQL Server误区30日谈 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB

误区 #27:使用BACKUP ... WITH CHECKSUM可以替代DBCC CheckDB错误乍一看,由于BACKUP WITH CHECKSUM会检测所有分配出去的页的校验和的值,这个误区貌似是这么回事,但实际上并不是这么回事,原因如下:由SQL Server 2000或是更早版本升上来的数据库page checksums必须开启,在开启后,并不是数据库中所有的页都会被叫上页校验和,当页损坏发生时,IO系统可不会区分损坏的页是有页校验和还是没有校...
SQL Server误区30日谈 第28天 有关大容量事务日志恢复模式的误区

SQL Server误区30日谈 第28天 有关大容量事务日志恢复模式的误区

误区 #28:有关大容量事务日志恢复模式的几个误区28 a)常见的DML操作可以被“最小记录日志”不是。在大容量事务日志恢复模式下只有一小部分批量操作可以被“最小记录日志”,这类操作的列表可以在Operations That Can Be Minimally Logged找到。这是适合SQL Server 2008的列表,对于不同的SQL Server版本,请确保查看正确的列表。28 b)使用大容量事务日志恢复模式不会影响灾难恢复首先,在上次事务日志备份之...
SQL Server误区30日谈 第29天 有关堆碎片的误区

SQL Server误区30日谈 第29天 有关堆碎片的误区

误区 #29:可以通过对堆建聚集索引再DROP后进行堆上的碎片整理Nooooooooooooo!!! 对堆建聚集索引再DROP在我看来是除了收缩数据库之外最2的事了。 如果你通过sys.dm_db_index_physical_stats(或是老版本的DBCC SHOWCONTIG)看到堆上有碎片,绝对不要通过建立聚集索引再删除聚集索引来整理堆碎片。好的做法应该是建立聚集索引之后不再删除,已经有非常多的资料阐述如何选择一个理想的聚集索引键--窄,很少变动...
SQL Server误区30日谈 第30天 有关备份的30个误区

SQL Server误区30日谈 第30天 有关备份的30个误区

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

MS SQL Server获取十二个月份的英文缩写

如果使用DATENAME()函数是取得月份的英文全称,但报表需要,只需显示月份名称缩写即可。 十二个月份的英文缩写,只有五月份是全称与缩写一样,其它月份的缩写仅是取前三位字母。因此Insus.NET写成一个自定义函数: 复制代码 代码如下: -- ============================================= -- Author: Insus.NET -- Create date: 2012-12-18 -- Descripti...
SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍

SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍

最近时间刚从客户端转入后台写服务,对于后台数据库以及服务的书写完全是个小白,所以最近写的肯定没有太多技术含量。 首先把遇到的问题摆出来:还是那张错误上报表,字段主要有上报错误ID(ErrorID),上报人(ReportPerson),上报时间(ReportTime)精确到毫秒,现在要做的统计是:(1)统计一定时间内【起止时间精确到毫秒】(beginTime,endTime)每个人每天上报的错误个数(2)统计一定时间内【起止时间到精确到月】(beginTim...
SQL 实现某时间段的统计业务

SQL 实现某时间段的统计业务

有一张错误上报表,下面只将与本文相关的字段罗列如下:上报人(ReportPerson)、上报错误ID(ErrorID)、上报时间(ReportTime)、状态(State),其中值为0(未解决)、1(已处理)、2(已解决)。 现在要做的是统计在某个时间段[beginTime,endTime](其中beginTime,endTime由前台进行传入)内,每个上报人上报错误点的总数以及已解决错误的总数。 复制代码 代码如下: select a.ReportPer...
SQLSERVER中得到执行计划的两种方式

SQLSERVER中得到执行计划的两种方式

得到执行计划的方式有两种: 1、一种是在指令的前面打开一些开关,让执行计划信息打在结果集里,这种方法比较适合在一个测试环境里对单个语句调优。 这些开关最常用的有 复制代码 代码如下: SET SHOWPLAN_ALL ON SET SHOWPLAN_ALL ON --(是不是reuse了一个执行计划,SQSERVERL有没有觉得缺少索引),只能在XML的输出里看到 SET STATISTICS PROFILE ON 还有如果使用SSMS的话,可以用快捷键...
SQLSERVER收集语句运行的统计信息并进行分析

SQLSERVER收集语句运行的统计信息并进行分析

对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间、执行时间、做了多少次磁盘读等。如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信息。 这些信息对分析问题很有价值。 复制代码 代码如下: SET STATISTICS TIME ON SET STATISTICS IO ON SET STATISTICS PROFILE ON SET STATISTICS TIME ON --------...
SQLSERVER语句的执行时间显示的统计结果是什么意思

SQLSERVER语句的执行时间显示的统计结果是什么意思

在SQL语句调优的时候,大部分都会查看语句执行时间,究竟SQLSERVER显示出来的统计结果是什么意思? 下面看一下例子 比较简单的语句: 复制代码 代码如下: 1 SET STATISTICS TIME ON 2 USE [pratice] 3 GO 4 SELECT * FROM [dbo].[Orders] 结果: 复制代码 代码如下: SQL Server 分析和编译时间: CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。 SQL Serve...
你真的了解触发器么 数据实时同步更新问题剖析

你真的了解触发器么 数据实时同步更新问题剖析

当我们想更新一张动态表的时候(即:表中的数据不断的添加),也许我们会用数据库代理,通过写作业,然后让他定时查询动态表中最新添加的数据,然后更新数据。这样时能实现更新数据的要求,但是数据却不能实时同步更新。 这个时候,触发器就是我们想要的神器了。我们可以在那张动态表上新建触发器。触发器的实质就是个存储过程,只不过他调用的时间是根据所建的动态表发生该表而执行(即:Insert新数据,Update或者Delete数据)。 具体怎么使用触发器,今天我这里就不介绍了...
存储过程实现订单号,流水单号(8位)的详细思路

存储过程实现订单号,流水单号(8位)的详细思路

此文章是借鉴园中的各位大神的,本人只是略作修改。有不好的地方,欢迎吐槽。 先写实现思路,然后再贴上代码 1.建立存储过程,声明输出参数@indentNum,输出订单号 2.一般订单号由两部分组成,日期和后续的订单号,根据需求看日期后面需要跟多少位数字,此文为8位。 3.定义函数@date为日期部分,赋值。 4.判断表中是否存在当日的数据,根据日期进行查询,一般订单表中都会有日期的吧。 5.如果表中存在,则在其表中最大的订单上+1,如果没有则新增当日的第一条...
SQL Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)

SQL Server简单模式下误删除堆表记录恢复方法(绕过页眉校验)

首先,我需要强调下,这篇主旨是揭示堆表的删除记录找回的原理,我所考虑的方面并不适用于每个人的每种情况,望大家见谅~ 很多朋友认为数据库在简单模式下,堆表误删除一条记录,是无法找回的,因为没有日志记录。其实不然,某种意义上是可以找回的,因为堆表在删除记录时,只更改了行偏移,实际数据没有被物理删除,所以利用这点,测试了下恢复数据,果然成功了,但是还有点问题没有研究出结果:如果不关闭页面校验,除了更改偏移量,删除数据时还需要更改页眉,这点还没时间去琢磨,所以恢复...
<< 121 122 123 124 125 126 127 128 129 130 >>