双机热备软件出现故障,导致SQL服务起不来,从磁盘COPY数据库文件出来附加,提示偏移量错误,有哪位大虾碰见过吗?

解决方案 »

  1.   

    可以的,语法如下,use [master]create database [数据库名] on 
    (filename=N'[数据文件路径]+[数据文件名].mdf' )
    for attach
      

  2.   

    CREATE 失败,无法创建日志文件
      

  3.   

    在SQL2008R2环境测试可以的,-- 建测试数据库u010
    create database [u010] on primary 
    (name=N'u010', filename=N'D:\SQLDATA\u010.mdf')
     log on 
    (name=N'u010_log', filename=N'D:\SQLDATA\u010_log.ldf')-- 卸离数据库
    exec dbo.sp_detach_db @dbname=N'u010'-- 确认日志文件存在: File Exists=1
    exec dbo.xp_fileexist 'D:\SQLDATA\u010_log.ldf'/*
    File Exists File is a Directory Parent Directory Exists
    ----------- ------------------- -----------------------
    1           0                   1(1 row(s) affected)
    */-- 删除日志文件
    exec xp_cmdshell 'del D:\SQLDATA\u010_log.ldf'-- 确认日志文件已删除: File Exists=0
    exec dbo.xp_fileexist 'D:\SQLDATA\u010_log.ldf'/*
    File Exists File is a Directory Parent Directory Exists
    ----------- ------------------- -----------------------
    0           0                   1(1 row(s) affected)
    */-- 缺少日志文件情况下,附加数据库.
    create database u010 on 
    (filename=N'D:\SQLDATA\u010.mdf') --> 只指定数据文件
    for attach-- 结果提示: 新日志文件D:\SQLDATA\u010_log.LDF已创建.
    /*
    File activation failure. The physical file name "D:\SQLDATA\u010_log.ldf" may be incorrect.
    New log file 'D:\SQLDATA\u010_log.LDF' was created.
    */-- 确认数据库附加成功.
    select fileid,name,filename
     from u010.dbo.sysfiles/*
    fileid name            filename
    ------ --------------- ----------------------------
    1      u010            D:\SQLDATA\u010.mdf      --> 原数据库的数据文件
    2      u010_log        D:\SQLDATA\u010_log.LDF  --> 刚自动新建的日志文件(2 row(s) affected)
    */