误区30日谈16-20
--17 a)页校验和(Page CheckSum)在从 SQL Server 2000或升级上来之后自动开启
--答案: 错误
--解释:SQL SERVER 2005 后的数据库默认使用 CHECKSUM选项, 但是从SQL SERVER 2000升级上来的数据库需要手动修改
--17 b)页校验和可以纠正错误
--答案: 错误
--解释:CHECKSUM 在读取时使用 CHECKSUM算法求出HASH 值再与页面中存储的 HASH值对比, 如果不一致 ,则说明该页有问题,但不能支持问题在哪或则修复问题
--17 c)当开启页校验和之后会开始为数据库中的每一页加上页校验和。
--答案: 错误
--解释: 启用校验和会立即生效 ,但是不会立即对数据库中每一页进行计算 ,只有在重建索引或修改数据页时 ,才会计算校验和并将之存放到数据页头一起写入磁盘
--17 d)对页进行读取就可以将校验和加到页中
--答案: 错误
--解释: 只有在页修改后写入磁盘时 ,才会计算校验和加到页中
--17 e)当数据库的页验证模式由 torn-page detection方式改为页校验和方式之后,所有的 torn-page detection信息都会丢失
--答案: 错误
--解释: 只有在数据页发生修改时 ,才会丢失该页torn-page detection信息并使用校验和
--17 f)页校验和可以在发生错误时马上检测到
--答案: 错误
--解释: 只有数据页再次被读取后 ,才会使用校验和检查数据页 ,因此发生错误时不会被马上检查到
--BTW,如果发生错误时就能检测到 ,就无效使用校验和在读取时检测了
--http://www.cnblogs.com/CareySon/archive/2012/12/25/2831877.html
--18 a)FileStream数据可以在远程存储
-- 不能,由于 FileStream数据容器( 指的是存放 FileStream文件的NTFS 文件夹,杜撰出来的术语 )必须像数据文件或日志文件那样符合本地存储策略也就是说,这个数据容器必须放在对于运行 SQL Server的Windows Server 是本地存储(译者注:也就是在‘计算机’里能看到的存储, DAC当然是了,其实SAN这类不直接连接服务器的也算是)访问 FileStream数据只要客户端连接到了 SQL Server服务器并获取响应的事务上下文后,就可以通过 UNC路径进行访问了。
--18 b)FileStream的数据容器可以嵌套
-- 不能,对于同一个数据库的两个不同的 FileStream容器可能在同一个目录下,但是却不能嵌套。而对于不同数据库的 FileStream容器无法在同一个目录下。我的一篇博文有一段代码能说明这一点 :Misconceptions around FILESTREAM storage。
--18 c)对于FileStream 的更新可以部分更新
-- 对于任何FileStream的更新都会导致创建一个全新的 FileStream文件, 这个操作会被日志原原本本的记录下来。这也就是为什么 FileStream不能被用于数据库镜像。这么多数据如果用于镜像的话那后果简直不可想象,只能希望未来的 SQL Server版本可以修改这种机制以允许部分更新。
--18 d)FileStream会在不需要的时候立刻被垃圾回收
-- 错误。FileStream数据会在不再需要并且到了下一个 Checkpoint的时候进行垃圾回收。这点并不是那么直接以至于很多人对 FileStream的回收机制存在误区。
--18 f)FileStream存放的目录以及文件名是随机取得
-- 其实不然, FileStream的文件名其实代表的是创建其操作对应 LSN号。表和列的GUID目录名是可以在系统表中获取到。
--http://www.cnblogs.com/CareySon/archive/2012/12/25/2831879.html
--误区#19:Truncate 表的操作不会被记录到日志
--答案: 错误
--解释: 所有对数据库修改的操作都会被记录到日志 ,由于TRUNCATE TABLE 的操作方式与 DELETE数据的的操作方式不一样 ,可以快速删除数据并且只写入少量的日志 ,但不能说不写日志
--扩展:TURNCATE TABLE 操作仍可以被事务提交和回滚 ,需要在日志还原时被REDO和 UNDO,因此TRUNCATE TABLE 也需要写日志
--TURNCATE TABLE是将组成表的数据页释放,将组成表的相关页释放的操作交给一个后台的线程进行队列处理的过程被称为 deferred-drop。使用后台线程处理deferred-drop的好处是这个操作不会使得其所在的事务需要执行很长时间,因此也就不需要大量的锁。
--http://www.cnblogs.com/CareySon/archive/2012/12/25/2831880.html
--误区#20: 在破坏日志备份链之后,需要一个完整备份来重新开始日志链
--答案: 错误
--解释: 除了完整备份能重启日志链外 ,还可以使用差异备份来重启日志链 (差异备份的跨度跨国日志链断开的间隙 )
--http://www.cnblogs.com/CareySon/archive/2013/01/16/2862280.html