附加資料庫總結

hexiaomail發表於2008-09-26

--SQL Server 2000附加資料庫--
/*
SQL Server 2000附加資料庫時,由於只有mdf檔案,而無ldf檔案時;從而在附加時出現不少錯誤,一時難以解決
將需要在8.0的例項中執行下列操作,實現資料庫的附加。
通常附加時出現的錯誤是由於資料庫在不同的例項之間,以及不同版本例項之間轉移而造成的。
*/

--1、新建一個同名的資料庫,路徑也要一致
CREATE DATABASE [SD201N_018]
     ON (NAME=SD201N_018,     FILENAME = N'D:\Program Files\SuperData\Data\SD201N_018.mdf' )
 LOG ON (NAME=SD201N_018_Log, FILENAME = N'D:\Program Files\SuperData\Data\SD201N_018_log.ldf')

--2、停止SQL SERVER例項

--3、將備份的資料庫MDF檔案覆蓋新建的同名資料庫檔案,並刪除ldf檔案

--4、啟動SQL SERVER例項 (SD201N_018將變為不可用)

--open 'allow'
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go

--update sys table and set the database status
update sysdatabases  set status=32768 where name='SD201N_018'

--rebuild the database log 
dbcc rebuild_log('SD201N_018','D:\Program Files\SuperData\Data\SD201N_018_log.ldf')

--change the database status 
update  sysdatabases  set status=0  where  name='SD201N_018'

--change the 'allow' value
sp_configure 'allow',0  
reconfigure   with   override

--check the database  
dbcc checkdb('SD201N_018')

  
select * from sysdatabases

--執行上述步驟後,資料庫即可開啟


--另:
--SQL Server 2005的一般步驟

--a)新建一個同名的資料庫,路徑一致
CREATE DATABASE [SD201N_018]
     ON (NAME=SD201N_018,     FILENAME = N'D:\Program Files\SuperData\Data\SD201N_018.mdf' )
 LOG ON (NAME=SD201N_018_Log, FILENAME = N'D:\Program Files\SuperData\Data\SD201N_018_log.ldf')
 
--b)         停止SqlServer
--
--c)         將備份的資料庫覆蓋D:\Program Files\SuperData\Data\SD201N_018.mdf
--d)         啟動SqlServer,(SD201N_018將變為不可用)
--檢視資料庫狀態
SELECT * FROM SYS.DATABASES
SELECT * FROM sys.database_recovery_status
 
--e)         將資料庫改為緊急恢復模式
ALTER DATABASE SD201N_018 SET EMERGENCY

--f)   修復資料庫
DBCC CheckDB ('SD201N_018')

--g)         將資料庫改為但使用者模式
ALTER   DATABASE   SD201N_018   SET   SINGLE_USER

--h)         再帶引數修復資料庫
DBCC CheckDB

--i)           將資料庫改為正常模式
ALTER   DATABASE  SD201N_018  SET   ONLINE

注:附加2000資料庫時一般情況下都需要在8.0版本例項下進行,當附加到2005上去時就會出現錯誤。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9932141/viewspace-464488/,如需轉載,請註明出處,否則將追究法律責任。

相關文章