sp_attach_single_file_db
将只有一个数据文件的数据库附加到当前服务器。语法
sp_attach_single_file_db [ @dbname = ] 'dbname'
    , [ @physname = ] 'physical_name'参数
[@dbname =] 'dbname'要附加到服务器的数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。 [@physname =] 'phsyical_name'据库文件的物理名称,包括数路径。physical_name 的数据类型为 nvarchar(260),默认值为 NULL。返回代码值
0(成功)或 1(失败)结果集
无注释
当使用 sp_attach_single_file_db 将数据库附加到服务器时,它创建一个新的日志文件并执行额外的清除工作,从新附加的数据库中删除复制。仅对以前使用显式 sp_detach_db 操作从服务器分离的数据库执行 sp_attach_single_file_db。权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs', 
   @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

解决方案 »

  1.   

    可以!我只有mdf,经常从我的移动硬盘搬到我学校的机房
      

  2.   

    那如果在建立DB的时候有MDF和LDF文件,但是后来LDF遗失了,只有MDF文件,这时可不可以只附加MDF文件呢?
      

  3.   

    我的意思是 建立DB的时候有MDF和LDF文件,但是后来LDF遗失了,只有MDF文件,这时可不可以只附加MDF文件呢?
      

  4.   

    http://www.beyoyo.net/dw/archives/2005/03/sql_servereaoea.html
      

  5.   

    我试过了但不行!!!!在查询分析器运行:EXEC sp_detach_db @dbname = 'ttt'
    EXEC sp_attach_single_file_db @dbname = 'ttt', 
       @physname = 'd:\ttt_Data.mdf'但出错!!!  错误信息:Server: Msg 15010, Level 16, State 1, Procedure sp_detach_db, Line 25
    The database 'ttt' does not exist. Use sp_helpdb to show available databases.
    Server: Msg 5170, Level 16, State 1, Line 1
    Cannot create file 'd:\ttt_log.LDF' because it already exists.
    Server: Msg 1813, Level 16, State 1, Line 1
    Could not open new database 'ttt'. CREATE DATABASE is aborted.
    Device activation error. The physical file name 'C:\Microsoft SQL Server\MSSQL\data\ttt_Log.LDF' may be incorrect.
    我想附加一个 ttt 数据库 , 'd:\ttt_Data.mdf' 这个文件是从朋友的机器上复制过来的,但没有复制日志文件
      

  6.   

    单独执行EXEC sp_detach_db @dbname = 'ttt'成功吗?
      

  7.   

    单独执行:EXEC sp_detach_db @dbname = 'ttt'
    也出错!!!说明一下在sql server 中 没有 ttt 这个数据库,错误信息:Server: Msg 15010, Level 16, State 1, Procedure sp_detach_db, Line 25
    The database 'ttt' does not exist. Use sp_helpdb to show available databases.
      

  8.   

    autocar(xin) ,执行EXEC sp_detach_db @dbname = 'ttt'要在master数据库环境下执行哦!  不知道你的不行是不是这样的原因
      

  9.   

    http://blog.csdn.net/pestd/archive/2005/04/26/363911.aspx