SQL实战日记--数据库文件还原问题排查
来源:互联网 发布:数据库的三层结构 编辑:程序博客网 时间:2024/05/21 04:17
前言
昨天群里有为同学,在测试文件组的备份还原时,遇到了一个问题。
测试的脚本参考的是KK的博客 ,链接地址如下 :http://blog.csdn.net/kk185800961/article/details/52050565
分析
经过测试,首先,KK的脚本在SQL Sever 2008 版本下,运行是正常的没有问题的。但是在SQL SERVER 2014版就提示上面的问题。
消息 8653,级别 16,状态 1,第 102 行
查询处理器无法为表或视图“TAB”生成计划,因为该表驻留在不处于联机状态的文件组中。
从错误提示来看,是文件组不在联机的状态。
SELECT FG.name , FG.type , FG.type_desc , FG.is_read_only , filegroup_guid , MF.state_descFROM sys.filegroups FG INNER JOIN sys.master_files MF ON FG.data_space_id = MF.data_space_idWHERE MF.database_id = DB_ID();
可以看到FG3文件组处于RESTORING的状态。,在还原数据库文件为norecovery 模式之后,文件组就会变成这个状态。
解决办法是,对数据再做一个日志备份,然后用recovery模式还原。
备份日志
BACKUP LOG Demo TO DISK = 'D:\MSSQLDATA\backup\Demo_log.bck' WITH INIT , COMPRESSIONGO --还原日志RESTORE LOG [Demo]FROM DISK = N'D:\MSSQLDATA\backup\Demo_log.bck'WITH RECOVERYGO
此时,文件组状态变成正常的ONLINE
查询表中的语句也正常了。
方法2:
调整KK的脚本的执行顺序。把原来的脚本是执行顺序调整一下。备份文件之后,就还原文件,然后再备份日志,还原日志。这样脚本也能正常运行
总结
总的来说,在SQL Server越往后的版本,对数据库的各种检查更加严格。我们在使用各种技术的时候,一定要先了解对应的背景。操作系统,数据库版本,数据库的架构等信息,否则可能会得出错误的结论,导致问题。
SQL Server 2008的版本下,
备份文件 --》备份日志--》还原文件norecovery--》还原日志文件recovery 正常
而在SQL Server 2014 版本和2008 版本下
备份文件 --》还原文件norecovery--》备份日志--》还原日志文件recovery 都正常
所以建议都使用下面的方式来还原数据库文件。
阅读全文
2 0
- SQL实战日记--数据库文件还原问题排查
- SQLServer实战日记--日志传送中断问题排查
- 还原 SQL Server 备份数据库文件
- SQL数据库文件备份和还原图片教程
- SQL调优日记--并行等待的原理和问题排查
- SQL Server还原数据库实战
- SQL Server数据库还原之只有MDF数据库文件的情况
- SQL Server数据库还原之只有MDF数据库文件的情况
- 解决sql2008 r2 还原数据库文件不能删除用户的问题
- 线上操作与线上问题排查实战
- 线上操作与线上问题排查实战
- 线上操作与线上问题排查实战
- 线上操作与线上问题排查实战
- 线上操作与线上问题排查实战
- 数据库文件BAK的还原
- sql还原一直提示正在还原问题
- 关于在SQL Server2005中还原SQL Server2000数据库文件出现3154的错误解决方案
- SQL Server还原问题总结
- linux中yum与rpm区别
- SAP服务器性能管理常用的功能解析
- C# 中XML XAML WPF的学习
- 2-1
- 数据结构课程设计银行储蓄系统
- SQL实战日记--数据库文件还原问题排查
- Spring整合Quartz定时任务 在集群、分布式系统中的应用
- 执行
- Android分辨率适配layout布局的问题
- 大龄程序员的未来
- 阿里云未来三年要追平亚马逊 | IDC:今年全球智能手表出货3160万部2021年翻番
- IntelliJ Idea几个常用的快捷键
- 《Java 编程技巧1001条》 第386条 声明多维数组
- LeetCode-98. Validate Binary Search Tree