create database 库名
 on
(name='逻辑名',
 filename='mdf路径'
)
for attach

解决方案 »

  1.   

    USE master;
    GO
    EXEC sp_detach_db @dbname = 'AdventureWorks';
    EXEC sp_attach_single_file_db @dbname = 'AdventureWorks', 
        @physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf';
      

  2.   

    USE master;
    GO
    sp_detach_db Archive;
    GO
    -- Get the SQL Server data path
    DECLARE @data_path nvarchar(256);
    SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                      FROM master.sys.master_files
                      WHERE database_id = 1 AND file_id = 1);
    -- Execute CREATE DATABASE FOR ATTACH statement
    EXEC ('CREATE DATABASE Archive
          ON (FILENAME = '''+ @data_path + 'archdat1.mdf'')
          FOR ATTACH');
    GO
      

  3.   

    SQL日志文件被删除是很危险的事情.
    不过,万一日志被删除,保留有数据文件,是可以依据数据文件产生日志文件的 
    SQL2000中可以使用DBCC REBUILD命令.
    SQL2005中可以使用CREATE DATABASE命令附加数据文件,同时产生日志文件假定数据库名为DBName, 数据文件位置为 StrDBFile, 逻辑名为 LogicDBName
    语法如下:CREATE DATABASE DBName
    ON (NAME=LogicDBName, FILENAME=StrDBFile)
    FOR ATTACH_REBUILD_LOG 如果有多个数据文件, 可以在ON括号后面继续添加定义
      

  4.   


    --联机帮助To attach a database
    CREATE DATABASE database_name 
        ON <filespec> [ ,...n ] 
        FOR { ATTACH [ WITH <service_broker_option> ]
            | ATTACH_REBUILD_LOG }
    [;]FOR ATTACH_REBUILD_LOG 
    指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于读/写数据库。如果缺少一个或多个事务日志文件,将重新生成日志文件。必须有一个指定主文件的 <filespec> 项。 注意:  
    如果日志文件可用,数据库引擎将使用这些文件,而不会重新生成日志文件。
     
    FOR ATTACH_REBUILD_LOG 具有以下要求:完全关闭数据库。
    所有数据文件(MDF 和 NDF)都必须可用。
    重要提示:  
    该操作会中断日志备份链。建议在完成该操作后执行完整数据库备份。有关详细信息,请参阅 BACKUP (Transact-SQL)。 
     
    通常,FOR ATTACH_REBUILD_LOG 用于将具有大型日志的可读/写数据库复制到另一台服务器,在这台服务器上,数据库副本频繁使用,或仅用于读操作,因而所需的日志空间少于原始数据库。不能对数据库快照指定 FOR ATTACH_REBUILD_LOG。