分离数据库使用的SQL SERVER的系统存储过程sp_detach_db,

语法:

sp_detach_db [ @dbname= ] 'database_name'   [ , [ @skipchecks= ] 'skipchecks' ]

参数说明:

@dbname:数据库名称

@skipchecks:选择在分离前对所有表运行 UPDATE STATISTICS。如果要跳过 UPDATE STATISTICS,请指定 true。若要显式运行 UPDATE STATISTICS,请指定 false

示例:

 

 
  
  1. Exec sp_detach_db N'SampleData',false 

附加数据库

1、使用sp_attach_db附加数据库

      语法:

      sp_attach_db [ @dbname= ] 'dbname' , [ @filename1= ] 'filename_n' [ ,...16 ]

      参数:

      @dbname:数据库名称

      @filename:数据库文件操作系统名称(含路径)

      注:最多可以为数据库指定16个文件名

     示例:

 

 
  
  1. exec sp_attach_db   
  2.    @dbname='SampleData',  
  3.    @filename1=N'C:\Sample\SampleData.mdf',  
  4.    @filename2=N'C:\Sample\SampleData_01.ndf',  
  5.    @filename3=N'C:\Sample\SampleData_02.ndf',  
  6.    @filename4=N'C:\Sample\SampleData_03.ndf',  
  7.    @filename5=N'C:\Sample\SampleData_04.ndf',  
  8.    @filename6=N'C:\Sample\SampleData_Log.ldf',  
  9.    @filename7=N'C:\Sample\Document' 
  10.     

2、使用CREATE DATABASE @dbname FOR ATTACH附加数据库
     

 
  
  1. CREATE DATABASE SampleData ON 
  2.  (FILENAME=N'C:\Sample\SampleData.mdf'),  
  3.  (FILENAME=N'C:\Sample\SampleData_01.ndf'),  
  4.  (FILENAME=N'C:\Sample\SampleData_02.ndf'),  
  5.  (FILENAME=N'C:\Sample\SampleData_03.ndf'),  
  6.  (FILENAME=N'C:\Sample\SampleData_04.ndf'),  
  7.  (FILENAME=N'C:\Sample\SampleData_Log.ldf'),  
  8.  (FILENAME=N'C:\Sample\Document')  
  9.  FOR ATTACH 

或者

 

 
  
  1. CREATE DATABASE SampleData ON 
  2.  (FILENAME=N'C:\Sample\SampleData.mdf'),  
  3.  (FILENAME=N'C:\Sample\SampleData_01.ndf'),  
  4.  (FILENAME=N'C:\Sample\SampleData_02.ndf'),  
  5.  (FILENAME=N'C:\Sample\SampleData_03.ndf'),  
  6.  (FILENAME=N'C:\Sample\SampleData_04.ndf'),  
  7.  (FILENAME=N'C:\Sample\Document')  
  8.  FOR ATTACH_REBUILD_LOG 

两者区别在于FOR ATTACH必须有可用的数据文件与日志文件,FOR ATTACH_REBUILD_LOG可不没有日志文件,在附加数据库的时候自动创建。

注意:不能分离与附加数据库快照。