数据库 备份后 无法还原 解决办法(SQLSERVER)

数据库 备份后 无法还原 解决办法(SQLSERVER)

有时候完全备份, 当还原的时候说不时数据库文件不让还原, 解决办法:
              可以直接复制数据库文件, xxx.mdf 和  xxx.ldf
 
              用 sp_attach_db  存储过程 就能搞定.
 
示例  
  下面的示例将   pubs   中的两个文件附加到当前服务器。  
   
  EXEC   sp_attach_db   @dbname   =   N'pubs',    
        @filename1   =   N'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs.mdf',    
        @filename2   =   N'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs_log.ldf'   
 
 
N表示Unicode的含义,就象类型中有varchar和nvarchar一样,一个Unicode字符占两个字节.使用N'的情况主要是在双字节系统环境中强制系统对每个字符用Unicode标准来解释,否则如果你的数据库.mdf文件是中文名而又不加N'的话,数据库加载后名称可能就变成乱码,因为系统按单字节处理字符造成!
 
 
............................................................
 
 
如果确认是SQL   SERVER无法启动,请按照下面步骤操作:  
  1.重装SQL   SERVER(注意要保留原来数据库的数据库文件,日志文件可不要)  
  2.在SQL   Analysis中用sp_attach_db将数据库加到服务器  
   
  sp_attach_db用法:  
  sp_attach_db  
  将数据库附加到服务器。  
   
  语法  
  sp_attach_db   [   @dbname   =   ]   'dbname'  
          ,   [   @filename1   =   ]   'filename_n'   [   ,...16   ]  
   
  参数  
  [@dbname   =]   'dbname'  
   
  要附加到服务器的数据库的名称。该名称必须是唯一的。dbname   的数据类型为   sysname,默认值为   NULL。    
   
  [@filename1   =]   'filename_n'  
   
  数据库文件的物理名称,包括路径。filename_n   的数据类型为   nvarchar(260),默认值为   NULL。最多可以指定   16   个文件名。参数名称以   @filename1   开始,递增到   @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的 系统 表。该列表还必须包括数据库分离后所有被移动的文件。  
   
  返回代码值  
  0(成功)或   1(失败)  
   
  结果集  
  无  
   
  注释  
  只应对以前使用显式   sp_detach_db   操作从数据库服务器分离的数据库执行   sp_attach_db。如果必须指定多于   16   个文件,请使用带有   FOR   ATTACH   子句的   CREATE   DATABASE。  
   
  如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行   sp_removedbreplication   从数据库删除复制。  
   
  权限  
  只有   sysadmin   和   dbcreator   固定服务器角色的成员才能执行本过程。   

你可能感兴趣的:(数据库 备份后 无法还原 解决办法(SQLSERVER))