当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQLServer 数据库还原和孤立用户的解决办法

MSSQL
SQl 跨服务器查询语句
sql2005 HashBytes 加密函数
防止SQLSERVER的事件探查器跟踪软件
Excel导入Sqlserver数据库脚本
sql cast,convert,QUOTENAME,exec 函数学习记录
select into 和 insert into select 两种表复制语句
sqlserver 日志恢复方法(搞定drop和truncate)
海量数据库查询语句
DBCC CHECKIDENT 重置数据库标识列从某一数值开始
MSSQL 数据库同步教程
sql 语句中的 NULL值
判断一个表的数据不在另一个表中最优秀方法
SQL货币数字转英文字符语句
executesql 存储过程
sql 查询结果合并union all用法_数据库技巧
SQLServe 重复行删除方法
SQLServer 数据修复命令DBCC一览
SQLSERVERS 数据整理方法
根据多条件查询临时表 想得到不同结果集的方法
sqlServer 获取汉字字串的拼音声母

MSSQL 中的 SQLServer 数据库还原和孤立用户的解决办法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 292 ::
收藏到网摘: n/a

先用  
  RESTORE   FILELISTONLY  
  FROM   DISK   =   'd:\comcrm.dat'    
  可以看到备份集里的LogicalName和PhysicalName  
  PhysicalName先不管,你记下LogicalName就好了  
   
   
  RESTORE   DATABASE   comcrm20041217   --新库名  
  FROM   DISK   =   'd:\comcrm.dat'   --存放你备份文件的位置及文件名  
  WITH   MOVE   'comcrm_Data'   TO   'c:\tcomcrm20041217.mdf',   --数据文件还原后存放的新位置  
  MOVE   'comcrm_Log'   TO   'c:\comcrm20041217.ldf'   ----日志文件还原后存放的新位置  
   
  comcrm_Data,comcrm_Log就是开始记下的数据文件和日志文件的LogicalName  
   
  'c:\tcomcrm20041217.mdf','c:\comcrm20041217.ldf'   是还原成的新库的物理文件名  
 

=================================================================
 
 
1.你可以试试直接恢复:  
  restore   database   comcrm20041217  
  from   disk='x:\comcrm.dat'    
   
   
   
  2.如果恢复出错,则要知道备份文件的具体内容才好恢复  
   
   
  首先要知道你的备份文件中包含了多少个备份及每个备份的详细信息,用SQL语句:  
  RESTORE   HEADERONLY   from   disk='x:\comcrm.dat'  
   
   
  这样,可以从上面的结果集(结果集列的含义参考SQL联机帮助,下同)中,知道你应该恢复的数据库的备份号Position列)  
  然后,就可以从备份文件中获取你要恢复的这次备份的详细信息:  
  restore   filelistonly   from   disk='x:\comcrm.dat'   with   file=xx   --xx是备份号  
   
  最后,你就可以用下面的语句来恢复了  
  restore   database   comcrm20041217  
  from   disk='x:\comcrm.dat'    
  with   file=xx  
  ,move   '数据文件名'   to   '实际恢复后数据文件存放的目录及文件名'     --这些信息根据上面的语句查询出来的结果进行修改  
  ,move   '日志文件名'   to   '实际恢复后日志文件存放的目录及文件名'  
 
 
============================================================
解决复制数据库后 孤立用户的问题
 
sql server数据库进行还原的时候需要先执行解决孤立用户的sql语句,
       sp_change_users_login 'report'   //查看孤立用户
       sp_change_users_login 'update_one','bt31user','bt31user'  //bt31user是需要解决的孤立用户,该语句是将孤立用户关联到系统库。
 
 
这里可以使用存储过程sp_change_users_login。它有三种动作,分别是reportupdate_oneauto_fix
       运行sp_change_users_login 'report',系统会列出当前数据库的孤立用户数。
       我们只需要选择当前数据库为testdb,然后运行
       sp_change_users_login 'update_one','test','test'
sp_change_users_login 'update_one','hbbt31User','hbbt31User'
       系统就会提示修复了一个孤立用户。
       如果没有建立test的登录用户,还可以用
sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'
来创建一个登录用户名为test,密码为testpassword的用户与之对应。