當存放sql server資料庫的硬碟空間不足或效能、質量不佳時,資料庫情緒自然不會好。為了調動資料庫積極性,最好的辦法莫過於給資料庫找個寬敞、安全的新家。這等搬家的大事,絕不可輕視之。-推薦文章
我們知道,在新建乙個資料庫的時候,我們會分別指定其資料檔案(.mdf檔案)以及事務日誌檔案(.ldf檔案)存放的位置。所以資料庫搬家,也就是把這兩個檔案安置到乙個新地方去。
在sql server中,資料庫有兩大家族:使用者資料庫與系統資料庫。對於它們要分別採用不同的方法來實現。
一、使用者資料庫搬家
操作方法有以下兩種
方法1:在企業管理器中進行
(1)在企業管理器中選定要搬家的資料庫名,在其上單擊滑鼠右鍵,出現如圖1所示對話方塊。
(2)選中「所有任務」,在其子選單中單擊「分離資料庫」。
(3)將該資料庫的資料檔案和日誌檔案從舊的位置(如d:\mssql\data)拷貝到新的位置(如e:\sqldatanew)。
(4)再在企業管理器中選中「資料庫」資料夾,在其上單擊滑鼠右鍵,在出現的對話方塊中選中「所有任務」,在其子選單中單擊「附加資料庫」。
(5)在出現的「附加資料庫」對話方塊中,選擇資料庫的兩個檔案的新位置。
方法2:用sql系統儲存過程sp_detach_db/sp_attach_db實現
(1)使用下面語句分離資料庫:
use master
goexec sp_detach_db 'mydb'
go(2)將該資料庫的資料檔案和日誌檔案從舊的位置拷貝到新的位置。
(3)使用下面語句重新附加資料庫:
use master
goexec sp_attach_db
'mydb', 'e:\sqldatanew\mydbdata.mdf', 'e:\sqldatanew\mydblog.ldf''
go二、系統資料庫搬家
1.master資料庫搬家
(1)由於sql server每次啟動的時候都需要讀取master資料庫,因此必須在企業管理器中改變sql server啟動引數中master資料檔案和日誌檔案的路徑。
在 sql server屬性的「常規」選項卡下面有乙個叫做「啟動引數」的按鈕,單擊後可以看到所示的介面。
其中,-d用來指定master資料庫檔案的路徑,而–l用來指定master資料庫日誌檔案的路徑。
刪除舊的master資料庫檔案和日誌檔案的路徑,新增新的master資料檔案和日誌檔案所在的路徑,如:
-de:\ sqldatanew \master.mdf
-le:\ sqldatanew \mastlog.ldf
(2)停止sql server服務,將master.mdf檔案和mastlog.ldf檔案拷貝到新的位置,如e:\ sqldatanew資料夾中。
(3)重新啟動服務即可。
小技巧:如果在「啟動引數」新增的master資料庫檔案和日誌檔案的路徑或檔名有誤,就會造成sql server啟動不起來。而此時想改正錯誤又因sql server啟動不了而重設不了「啟動引數」。其實這兩個檔案路徑和檔名是放置在登錄檔hkey_local_machine\sofware\microsoft\miccrosoft sql server\你安裝sql伺服器的名\mssqlserver\parrmeters下的引數sqlarg1和sqlarg2中,修改這兩個引數的值即可。
2. msdb資料庫和model資料庫搬家
(1)對於msdb資料庫和model資料庫,我們不能在企業管理器中實現分離和附加,只能用sp_detach_db和sp_attach_db儲存過程來分離和附加這兩個資料庫。
其中,對於msdb資料庫,還應確保sql server**當前沒有執行,否則sp_detach_db儲存過程將執行失敗,並返回如下訊息:
「無法除去資料庫 'msdb' ,因為它當前正在使用。」
(2)調出如圖4所示的「啟動引數」對話方塊,新增新引數-t3608。這樣,啟動sql server,它就不會恢復除master之外的任何資料庫。
(3)重新啟動sql server,再用下面命令分離msdb或者model資料庫:
exec sp_detach_db 'msdb'
go(4)將資料檔案和日誌檔案移到新的位置,然後再用下面命令重新附加msdb資料庫或者model資料庫:
use master
goexec sp_attach_db
'msdb', 『e:\sqldatanew\msdbdata.mdf', ' e:\sqldatanew\msdblog.ldf '
go(5)在企業管理器中,從「啟動引數」框中刪除-t3608跟蹤標記,再停止並重新啟動sql server。
3. tempdb資料庫搬家
對於tempdb資料庫,則可以直接使用alter database語句來為資料檔案和日誌檔案指定新的存放位置,如下所示:
use master
goalter database tempdb modif
y file (name=tempdev, filename ='e:\sqldatanew \tempdb.mdf')
goalter database tempdb modif
y file(name=templog, filename=
' e:\sqldatanew \templog.ldf')
go至此,sql server 中資料庫全部搬家完成。
資料庫出現死鎖怎麼辦?
最近接到乙個需求,需要同步二十萬條資料到我們資料庫來,然而過程並不太順利,解決之後來總結一下。後來了解情況後發現 中沒有事務的相關處理,涉及到資料量很大如果出現網路波動或其他訪問操作同一張表就會容易引發死鎖問題。procedure sync mnt five tree is update num n...
忘記oracle資料庫密碼怎麼辦
很久不用的oralce資料庫,如果忘記了密碼,可以這樣解決 如果沒有設定環境變數,去目錄c oracle product 10.2.0 db 1 bin 執行以下命令 c oracle product 10.2.0 db 1 bin sqlplus nolog sql plus release 10...
資料庫中了勒索病毒,怎麼辦?
一 sql server sql server 是乙個關聯式資料庫管理系統。它最初是由microsoft sybase 和ashton tate三家公司共同開發的,於1988 年推出了第乙個os 2 版本。在windows nt 推出後,microsoft與sybase 在sql server 的開...