Welcome 微信登录

首页 / 数据库 / SQLServer

SQL Server日志在高可用和灾难恢复中的作用

SQL Server日志在高可用和灾难恢复中的作用

SQL Server日志在高可用和灾难恢复中的作用2015-02-08简介日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性。本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色。日志损坏日志可能会由于IO子系统的故障而损坏,当出现日志损坏时,如果您对日志的原来略有了解,并能在日志损坏的情况下尽...
SQL Server误区:在服务器故障转移后,正在运行的事务继续执行

SQL Server误区:在服务器故障转移后,正在运行的事务继续执行

SQL Server误区:在服务器故障转移后,正在运行的事务继续执行2015-02-08误区 #1:在服务器故障转移后,正在运行的事务继续执行这当然是错误的!每次故障转移都伴随着某种形式的恢复。但是如果当正在执行的事务没有Commit时,由于服务器或实例崩溃导致连接断开,SQL Server可没有办法在故障转移后的服务器重新建立事务的上下文并继续执行事务-无论你使用的故障转移方式是集群,镜像,日志传送或是SAN复制。对于故障转移集群来说,当故障转移发生后,...
SQL Server误区:即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭

SQL Server误区:即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭

SQL Server误区:即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭2015-02-08误区 #3: 即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭a)是不允许的 b)是允许的即时文件初始化是一个在SQL Server 2005以及之上的版本鲜为人知的特性。这个特性允许数据文件(仅仅是数据文件,不包括日志文件)初始化的过程跳过填0初始化过程。这种方式是在发生灾难时大大减少Downtime的好办法---在恢...
SQL Server误区:数据库镜像在故障发生后马上就能发现

SQL Server误区:数据库镜像在故障发生后马上就能发现

SQL Server误区:数据库镜像在故障发生后马上就能发现2015-02-08误区10.数据库镜像在故障发生后,马上就能发现错误市面上大肆宣传数据库镜像技术可以在故障发生后,立即检测到错误并进行故障转移。但事实并不是这样,检测到故障发生的速度要取决于故障的类型。检测故障发生的最快的情况是,镜像中的主体实例崩溃,从而镜像服务器每秒一次的PING就无法返回值,从而知道主体服务器上不再有这个进程侦听相应的TCP端口,这种情况下,镜像服务器几乎瞬间就能发现故障。...
SQL Server误区:镜像在检测到故障后瞬间就能故障转移

SQL Server误区:镜像在检测到故障后瞬间就能故障转移

SQL Server误区:镜像在检测到故障后瞬间就能故障转移2015-02-08误区 #11:镜像在检测到故障后瞬间就能故障转移错误数据库镜像的故障转移既可以自动发起,也可以手动发起。在自动发起的情况下,是由镜像服务器执行故障转移操作(你没有看错,并不是由见证服务器来做故障转移的决定),在见证服务器和镜像服务器都发现无法和主体服务器交换信息(这个过程被称为”形成仲裁”,译者注:也就是通过程序对集群进行监管,集群可用的依据来自监管程序...
SQL Server误区:TempDB的文件数和需要和CPU数目保持一致

SQL Server误区:TempDB的文件数和需要和CPU数目保持一致

SQL Server误区:TempDB的文件数和需要和CPU数目保持一致2015-02-08误区 #12:TempDB的文件数和需要和CPU数目保持一致错误哎,由于上述误区是微软“官方”的建议,并且还有大量博文坚持这个观点,这个误区已经是老生常谈。但让人困惑的是SQL CAT团队给出的建议就是1:1,但这个建议是源自扩展方面的原理来说,而不是一个通用法则。因为他们所面对的大型客户数据量服务器和IO子系统都是大部分人没有机会遇到的。每...
SQL Server误区:在SQL Server 2000兼容模式下不能使用DMV

SQL Server误区:在SQL Server 2000兼容模式下不能使用DMV

SQL Server误区:在SQL Server 2000兼容模式下不能使用DMV2015-02-08误区 #13.在SQL Server 2000兼容模式下不能使用DMV错误对于兼容模式已经存在了很多误解。80的兼容模式的数据库是否意味着能够附加或恢复到SQL Server 2000数据库?当然不是。这只是意味着一些T-SQL的语法,查询计划的行为以及一些其它方面和SQL Server 2000中行为一样(当然,如果你设置成90兼容模式则和SQL Ser...
SQL Server误区:CheckPoint只会将已提交的事务写入磁盘

SQL Server误区:CheckPoint只会将已提交的事务写入磁盘

SQL Server误区:CheckPoint只会将已提交的事务写入磁盘2015-02-08误区 #15:CheckPoint只会将已提交的事务写入磁盘错误这个误区是由于太多人对日志和恢复系统缺少全面的了解而存在已久。CheckPoint会将自上次CheckPoint以来所有在内存中改变的页写回磁盘(译者注:也就是脏页),或是在上一个CheckPoint读入内存的脏页写入磁盘。无论事务是否已经提交,其所影响的页都会在Checkpoint时写回磁盘。但对于T...
SQL Server误区:有关FileStream的存储及垃圾回收

SQL Server误区:有关FileStream的存储及垃圾回收

SQL Server误区:有关FileStream的存储及垃圾回收2015-02-08误区 #18:如下多个有关FileStream的误区全部错误18 a)FileStream数据可以在远程存储不能,由于FileStream数据容器(指的是存放FileStream文件的NTFS文件夹,杜撰出来的术语)必须像数据文件或日志文件那样符合本地存储策略-也就是说,这个数据容器必须放在对于运行SQL Server的Windows Server是本地存储(译者注:也就...
SQL Server误区:在破坏日志备份链后需要完整备份来重新开始日志链

SQL Server误区:在破坏日志备份链后需要完整备份来重新开始日志链

SQL Server误区:在破坏日志备份链后需要完整备份来重新开始日志链2015-02-08误区 #20:在破坏日志备份链之后,需要一个完整备份来重新开始日志链错误事务日志备份会备份自上次事务日志备份以来所有的事务日志(如果从来没有过日志备份的话,那就从上一次完整备份开始)。有好几种类型的操作会中断事务日志的连续性,也就是说除非重新开始新的日志链,SQL Server无法再进行日志备份。下面这几种操作都有可能引起日志链断裂:由完整恢复模式或大容量事务日志恢...
数据库损坏可以通过重启MSSQL或是Windows或是附加和分离数据库解决

数据库损坏可以通过重启MSSQL或是Windows或是附加和分离数据库解决

数据库损坏可以通过重启MSSQL或是Windows或是附加和分离数据库解决2015-02-08误区 #21:数据库损坏可以通过重启SQL Server或是Windows,或是附加和分离数据库解决错误SQL Server中没有任何一项操作可以修复数据损坏。损坏的页当然需要通过某种机制进行修复或是恢复-但绝不是通过重启动SQL Server,Windows亦或是分离附加数据库。而实际上,如果你的数据库的损坏程度无法进行Crash Recovery的话(质疑状态...
SQL Server误区:有关锁升级的误区

SQL Server误区:有关锁升级的误区

SQL Server误区:有关锁升级的误区2015-02-08误区 #23: 锁升级的过程是由行锁升级到页锁,再由页锁升级到表锁错误实际不是,在SQL Server 2005和之前的版本,锁升级会直接升到表锁。在SQL Server 2005或SQL Server 2008,你可以通过如下跟踪标志改变锁升级的行为:标志1211-完全禁止锁升级,但锁使用的内存会被限制在动态分配内存的60%,当超过这个值时,更多的锁将会伴随着内存溢出错误而失败。标志1224-...
SQL Server误区:26个有关还原(Restore)的误区

SQL Server误区:26个有关还原(Restore)的误区

SQL Server误区:26个有关还原(Restore)的误区2015-02-08本系列文章一直所没有触及的就是有关”还原(Restore)”的话题,因为一旦牵扯到这个话题就会涉及大量的误区,多到我无法通过一篇文章说完的地步。事实上,我希望用字母表的顺序为每一个误区进行编号,希望你看了不要昏昏欲睡。下面开始揭穿这26个误区。Myth #24:26个有关还原(Restore)的误区都是错误的24 a)可以通过WITH STOPAT参...
SQL Server误区:有关填充因子的误区

SQL Server误区:有关填充因子的误区

SQL Server误区:有关填充因子的误区2015-02-08误区 #25:多个有关填充因子的误区都是错误的25a) 填充因子是一直存在的不是的,通过可以看到(译者:我在新版的BOL没有找到这句话):重要: 填充因子仅仅在索引创建或重建时生效,SQL Server存储引擎并不会一直保证页内的空闲值和填充因子保持一致。如果为了保证页内的空余值和指定的填充因子保持一直那么填充因子就会失去意义。因为这时页即使不满也需要进行分页。25 b)填充因子0和100...
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...
<< 231 232 233 234 235 236 237 238 239 240 >>