MS SQL Server问题与其正确解答方案

数据库 SQL Server
我们今天主要向大家描述的是MS SQL Server问题与其正确解答方案,假如你对MS SQL Server问题与其正确解答方案有兴趣了解的话,你就可以通过以下的文章对其进行了解。

以下的文章主要向大家讲述的是MS SQL Server问题与其正确解答方案,MS SQL Server在实际操作中我们经常会遇到一些问题,你是否对其头疼至极,以下的文章主要是对这些问题的实际解答。

MS SQL Server问题一、数据库恢复时出现诸如“设备激活错误,请使用with move选项来标志该文件的有效位置”报错的解决方法

 

MS SQL Server问题一、数据库恢复时出现诸如“设备激活错误,请使用with move选项来标志该文件的有效位置”报错的解决方法

 

别人将一个数据库备份发给了我,我为了看里面的表,所以我就在我机器里装一个MSSQL数据库。现在我想把保存的这个备份数据库 caiwu.db 导入到我的 MS SQL数据库中,发现在企业管理器中,操作:所有任务——>还原数据库——>选择“从设备”还原,在硬盘里找到了那个备份数据库文件caiwu.db,导入。报错:设备激活错误,请使用with move选项来标志该文件的有效位置。

解决方法:右键点“数据库”(注意不是某个特定的数据库)--》所有任务--》还原数据库--》选择“从设备”还原,选择要还原成的数据库名,然后在选项卡中,选择最现有数据库上强制还原数据库,然后在下面修改数据库还原后的物理路径,这个路径要是存在的一个路径,否则就会出现上面的错误,逻辑文件名可以不用改。

MS SQL Server问题三、怎么样把sql server 2000的用户表的所有者,改成dbo,而不是用户名。

(附修改存储过程的方法,在查询器中执行:

EXEC sp_changeobjectowner 'usera.hishop_creatorder', 'dbo'),就把 usera的存储过程改为dbo所有了。

 

答:方法一:右键点击该表-》设计表,在上面的一排小图标中,点最后一个“条件约束”,点“表”页,在里面更改所有者。(若没有条件约束的小图标,可以点右键,能看到一个“check约束”的选项)

方法二:利用脚本直接执行,用系统帐号或者超户登陆到该数据库,然后执行下面语句:

  1. sp_configure 'allow updates','1'  
  2. go  
  3. reconfigure with override  
  4. go  
  5. update sysobjects set uid=1 where uid<>1   
  6. go  
  7. sp_configure 'allow updates','0'  
  8. go  
  9. reconfigure with override 

第二种方法只能使用一次,第二次使用会出错。

三、只有mdf和ldf文件,甚至只有mdf文件,如何恢复数据库

1. 首先确认已经备份了.mdf和.ldf文件。

2. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。

3. 用原有的.mdf和.ldf文件覆盖新建数据库对应的.mdf和.ldf文件。

4. 重新启动SQL Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。(人品好的话,这个时候数据库就已经恢复正常了,上次xrf的数据库就是这样被我恢复的。人品不好的话,下面的步骤也不行,我有一次就是找了一个北京做数据恢复的公司才恢复完毕。)

5. 在SQL查询分析器中执行以下命令,以允许更新系统表:

  1. use master  
  2. go  
  3. sp_configure ‘allow updates’,1  
  4. reconfigure with override  
  5. go  

6. 将这个数据库置为紧急模式:

  1. update sysdatabases set status = 32768 where name = 'db_name' 
  2. go  

7. 使用DBCC CHECKDB命令检查数据库中的错误:

  1. DBCC CHECKDB(‘db_name’)  
  2. GO  

8. 如果DBCC CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:

  1. sp_dboption 'db_name',’single user’,’true’  
  2. DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)  
  3. GO  

如果在执行DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQL Server服务,然后继续尝试。

9. 如果DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:

重新执行DBCC CHECKDB(‘db_name’)命令,确认数据库中已没有错误存在。

清除数据库的置疑状态:sp_resetstatus 'db_name'

清除数据库的单用户模式状态:sp_dboption 'db_name',’single user’,’false’

重新启动SQL Server服务,如果一切正常的话,则数据库已经成功恢复。

10. 如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。

如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了:

 

1. 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。

 

2. 用原有的ldf文件覆盖新建数据库对应的.mdf文件,将其日志文件(.ldf)删除。

3. 启动SQL Server服务,并将数据库置为紧急模式(同上: 步骤5和步骤6)。

4. 停止并重新启动SQL Server服务。

5. 执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名)

  1. DBCC REBUILD_LOG(’cas_db’, 'D:\cas_db\cas_db_Log.LDF') 

6. 重新将该数据库置为单用户模式。(http://support.microsoft.com/?id=264154)

7. 再次尝试使用DBCC CHECKTABLE或DBCC CHECKDB命令检查并修复数据库中的错误

本篇文章来源于:开发学院 http://edu.codepub.com 原文链接:http://edu.codepub.com/2009/0714/9655.php

 

责任编辑:佚名 来源: 广州日报
相关推荐

2010-07-16 10:48:24

MS SQL Serv

2010-07-20 15:24:27

MS SQL Serv

2010-06-29 17:04:37

SQL Server警

2010-06-28 11:22:14

MS SQL Serv

2010-07-07 13:39:33

SQL Server监

2010-07-26 08:49:58

SQL Server游

2010-07-09 13:59:53

Sql Server日

2010-07-09 10:36:22

SQL Server

2010-07-19 11:35:05

2010-07-06 09:33:07

SQL Server远

2010-07-08 13:26:02

SQL Server

2010-07-05 10:37:00

2009-05-22 16:42:02

MS SQLMySQL转换

2010-07-07 09:27:15

SQL Server索

2010-07-14 10:43:00

SQL Server

2010-06-30 16:41:02

识别SQL Serve

2011-03-21 10:13:31

Sql Server数分区

2010-07-07 10:31:43

SQL Server数

2010-07-16 10:41:34

SQL Server

2010-07-14 13:56:10

SQL Server
点赞
收藏

51CTO技术栈公众号