sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑在企业使用SQLServer时,有时会因为各种原因遇到SQLServer数据库置疑的情况,那么是什么原因产生数据库置疑呢?对于这样的问题要如何预防?遇到后要如何解决呢?本文主要对这几个疑问进行解答。

大家好,又见面了,我是你们的朋友全栈君。

在企业使用SQL Server时,有时会因为各种原因遇到SQL Server数据库置疑的情况,那么是什么原因产生数据库置疑呢?对于这样的问题要如何预防?遇到后要如何解决呢?本文主要对这几个疑问进行解答。

 

  • 数据库置疑产生的原因
    1. SQL Server所在分区空间是否够?数据库文件大小是否达到最大文件限制?

FAT32的格式只支持4G以内的文件

  1. 数据库文件损坏或被非正常删除时出现这种情况
  2. 病毒防火墙的扫描也会引起数据库置疑
  3. SQL Server启动时,将会尝试获得对数据库文件的排他访问权,如果此时该文件被其他程序占用,或者遗失,数据库将会被标记为置疑
  4. 电脑非法关机也会造成数据库置疑
  5. 电脑磁盘有坏道有可能造成数据库置疑

 

  • 数据库置疑的预防
    1. 数据库存放的盘符,空间是否够大,经常检查盘符的空间
    2. 数据库存放的盘符的格式设置为NTFS格式
    3. 进行病毒清除时,尽量把SQL服务停掉,再进行检查
    4. 尽量减少非正常关机
    5. 建议客户购买后备电源
    6. 给客户实施软件之后一定要做好自动备份
    7. 建议客户每隔一定时间手动备份一次

 

  •  数据库置疑的修复
    1. 点击后台登录时,如果提示如下图片就有可能表示数据库置疑了

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

 

  1. 需要确认检查数据库置疑,打开企业管理器中的数据库目录,如下图显示表示置疑

   

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

   

下面所有修复置疑的语法,在没有特别提到时,默认数据库都请选择(Master)数据库)

  1. 修复置疑(必须在SQL的查询分析器中才能进行数据修复置疑工作)
  1. 打开查询分析器,当数据置疑之后在查询分析器中是看不到置疑的数据库名称的,所以进入查询分析器之后,所选数据库默认(Master)数据库即可。复制下面置疑语法到查询分析器中执行。

修复数据库置疑的语法

 

SP_configure ‘allow update’,1

go

RECONFIGURE WITH OVERRIDE

go

update sysdatabases

set status=-32768

where name=’zmsoftpos_cs’–数据库名称

go

dbccrebuild_log(‘zmsoftpos_cs’,’D:\zmsoftpos_cs_log’)–重新建立日志

Go

update sysdatabases

set status=26

where name=’zmsoftpos_cs’

Go

Sp_configure ‘allow update’,0

Go

Reconfigure with override

GO

备注:其中所有的“zmsoftpos_cs”是置疑的数据库名称,请根据客户实际的置疑数据库进行更改名称,其他的内容不变

  1. 拷入置疑语法之后,请按F5执行,如果显示框内显示的内容如下表示置疑修复成功

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

  1. 置疑修复成功之后,再到如上图的master下拉框架内就可以选择所修复的置疑数据库了,此时置疑是修复成功了,但是并不代表此数据库就没有问题了,请暂时不要进软件,我们还需要检查数据库有没有问题。

 

  1. 检查修复置疑好的数据库是否正常
  1. 打开查询分析器选中修复好的数据库名称,输入“dbcc checkdb”语法,再按F5执行,根据数据库的大小执行需要的时间不确定,请耐心等待,执行完之后在显示框内就会显示一些相关内容如下图:

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

如上图所示,把显示框拖到最下面,如果“CHECKDB发现了 0个分配错误和 0个一致性错误”即表示此数据库已经好了,不用再修复了,客户即可进入软件进行操作了。

备注:(以下的语法就不用再执行了)

  1. 如果执行“dbcc checkdb”后显示框内显示了很多红色的记录,那么表示这个数据库的有些表还有错误需要修复

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

 

  1. 修复过程如下:(修复过程中语法内的数据库名称都根据客户使用的数据库进行更改)
  1. 首先退出所有的客户端软件与企业管理器,只打开查询分析器,默认数据库“Master,拷入如下语法执行:

sp_dboption ‘zmsoftpos_cs’,’single user’,’true’

备注:其中的数据库名称根据客户使用的数据库进行更改。此语法是把数据库设置为“单用户模式

 

  1. 设置为单用户模式之后,拷入如下语法进行多次执行

dbcc checkdb(zmsoftpos_cs,REPAIR_REBUILD)

备注:数据库名称根据客户使用的数据库进行更改。此语法可以多次执行,也需要多次执行,每执行完一次拖到显示框内的最后面如果“发现的是0个分配错误与O个一致性错误”就不用再修复了,只需执行下面语法即可

Sp_dboption ‘zmsoftpos_cs’,’single User’,’False’

备注:下面的语法也不需执行了。

如果执行多次之后:“CHECKDB 发现了 N个分配错误和N个一致性错误”不会再次减少时,表示此语法修复不成功,需要进行下面的修复过程。

 

  1. 再把下面语法拷进入,进行多次执行:

dbcc checkdb (‘zmsoftpos_cs’,REPAIR_allow_data_loss)

备注:此语法的执行与上面“ B ”点中执行的语法过程一样,执行到此步骤百分之九十以上的数据库都是可以修复的。如果执行到最后分配错误与一致性错误还不减少,那么执行下面的”D”操作

 

  1. 拷入如下语法执行:

 exec sp_MSforeachtable’dbcc dbreindex(”?”)’

备注:执行此语法时,此时的“Master ”数据库名称一定要选择修复的数据库名称,执行才会生效。执行完成之后,再使用“dbcc checkdb”语法再检查一次,如果是“发现的是0个分配错误与O个一致性错误”表示修复成功,如果是:“CHECKDB发现了N个分配错误和N个一致性错误

表示此数据库坏得很历害,使用此方法已不能修复成功了。必面使用其他方法了。最后不管修复成不成功都要使用下面的语法结尾:

Sp_dboption ‘zmsoftpos_cs’,’single User’, ‘False’

备注:把之前的单用户模块解除掉

 

  1. 在上面的修复过程中不能解决的问题,再使用BCP命令语法进行修复

      例:以超市版本为例,超市版本的数据库名称为:zmsoftpos_cs

A、打开帐套管理新建一个相同的帐套,数据库名称就会是zmsoftpos_cs_01的帐套名称,新建好之后,一定要使用后台登录进去一次,再退出后台。

B、打开查询分析器,选择好帐套数据库“zmsoftpos_cs”把下面的语法拷进入按F5执行:

select ‘if EXISTS(SELECT * FROM zmsoftpos_cs_01..sysobjectsWHERE name = ‘ + char(39) + name + char(39) + ‘)’+char(13)+ ‘delete from zmsoftpos_cs_01..’+name fromzmsoftpos_cs..sysobjects where type=’U’and name not in(‘system_sheet_setup’,’system_mode_file’,’system_image’) order by name

执行完成之后在下面的显示框架内就会出现如下语法:

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

使用鼠标左击一下图片中红色圆圈内的按钮,就会选中下面的语法,然后再到红色圆圈内的按钮上点鼠标右键,点击另存为,就会出现如下对话:

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

其中的保存类型一定要先选择所有文件,然后再到文件名处,填写好如图片中输入的名称,然后点保存!

 

C、以上的语法另存为之后,再拷入以下的语法执行:

select ‘bcp zmsoftpos_cs..’+name+’ out f:\data\’+name+’.txt-c -S127.0.0.1 -Usa_ -P422426362227001′ from zmsoftpos_cs..sysobjects wherextype=’U’

and name not in(‘system_sheet_setup’,’system_mode_file’,’system_image’) order by name

备注:以上的语法中有一个文件存放路径,“f:\data\”此路径根据实际的情况创建,然后更改过来,再执行。执行之后,按照上面的方法,点击另存为如下图:

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

其中的保存类型也要先选择所有文件,然后再到文件名中填入如图上的名称:导出数据.bat文件名,然后再点保存,保存的路径一定要是上面语法中设置中文件夹的路径。

 

D、此时再选择超市版本的zmsoftpos_cs_01的帐套名称,然后在左上角的文件中打开找到之前保存的“删除数据.sql”的文件,把其中的

deletefrom全部替换成“truncate table”,然后再按F5执行。

 

E、把D点的语法执行完成之后,还是选择zmsoftpos_cs.01帐套再执行以下的语法:

select ‘bcp zmsoftpos_cs_01..’+name+’ in f:\data\’+name+’.txt-c -S127.0.0.1 -Usa_ -P422426362227001′

from zmsoftpos_cs..sysobjects where xtype=’U’ and name not in(‘system_sheet_setup’,’system_mode_file’,’system_image’) order by name

其中的路径f:\data\一定要与“C”点中的路径一致。按F5执行之后,按照C点的步骤,把显示框内的语法另存为“导入数据.bat”的文件名,保存到语法的路径文件夹内。

 

F、以上的步骤操作完成之后,打开以上语法存放的径路,先双击导出数据文件,双击之后就会出现如下对话框架:

sql2008数据库置疑的解决方法_sqlserver2008数据库可疑

此界面表示,正在从原帐套里面把数据导出来,请您静心等待,导出完成之后此界面会自动关闭的。

等待完成之后,再双击”导入数据.bat文件,也会出现如上的界面。也请您静心等待,导出完成之后界面也会自动关闭。

 

G、以上的步骤都完成之后,请把zmsoftpos_cs_01的帐套,备份一次,然后把zmsoftpos_cszmsoftpos_cs_01两个帐套都删掉,然后新建超市版本的帐套,把恢复备份的zmsoftpos_cs_01文件,此时您的数据库修复的工作就大功告成了。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125160.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 克莱因瓶莫比乌斯带_克莱因瓶剪莫比乌斯带

    克莱因瓶莫比乌斯带_克莱因瓶剪莫比乌斯带  [克莱茵瓶&莫比乌斯带]在1882年,著名数学家菲立克斯·克莱因(FelixKlein)发现了后来以他的名字命名的著名“瓶子”。这是一个象球面那样封闭的(也就是说没有边)曲面,但是它却只有一个面。在图片上我们看到,克莱因瓶的确就象是一个瓶子。但是它没有瓶底,它的瓶颈被拉长,然后似乎是穿过了瓶壁,最后瓶颈和瓶底圈连在了一起。如果瓶颈不穿过瓶壁而…

  • oracle删除索引_创建普通索引sql

    oracle删除索引_创建普通索引sql1.索引分类a)唯一索引,作用是数据约束,保证数据唯一,还有就是数据索引,提高查询效率b)一般索引,只有数据索引的作用,2.唯一索引的建立createuniqueindex索引名on表名(字段名)ok,假设有一个Emploeyy表,里面有一个empName字段,我们来为empName添加唯一索引createuniqueindexidx_empnameone…

  • Python调用百度云api,实现截图图片文字识别

    Python调用百度云api,实现截图图片文字识别调用百度云api,实现截图图片文字识别相信大家在网上查找资料时都会遇到一些类似于pdf格式的文档,无法直接复制,手打太过于浪费时间。那么在这里我分享一个调用百度云api文字识别接口识别此类文字的python小程序。本人刚学习python时间不长,如果内容有错误还望斧正。首先我们需要去百度云官网申请一个接口点击立即使用创建应用填写需要填写的数据后点击立即创建,即可创建成功此时我们…

  • 基于pytorch_pytorch handbook

    基于pytorch_pytorch handbook代码来源少量中文注解纯学习https://github.com/joosthub/PyTorchNLPBook/blob/master/chapters/chapter_5/5_2_CBOW/5_2_Continuous_Bag_of_Words_CBOW.ipynbimportjsonimportosfromargparseimportNamespacefromtq…

  • 如何利用Javascript发送GET/POST请求「建议收藏」

    如何利用Javascript发送GET/POST请求「建议收藏」如何利用Javascript发送GET/POST请求最近在做基于TWS的分析系统,因为采用Flask+Java的技术架构方案,所以需要开发Web,然而我自己没有做过类似的开发,所以很多工作是从头开始学着做的。因此,在实现表单数据提交的时候,当时就想到个问题,如果一个页面里内容足够多的话,仅用form提交的话,后台就需要做非常复杂的判断,以此确认用户提交的是哪类数据,这样工程不仅难看,而且低效。于是咨

  • php 正则表达式怎么匹配标签里面的style?

    php 正则表达式怎么匹配标签里面的style?

    2021年10月15日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号