用sql語句實(shí)現(xiàn)分離和附加數(shù)據(jù)庫(kù)的方法
更新時(shí)間:2010年03月13日 12:16:18 作者:
對(duì)于分離一個(gè)數(shù)據(jù)庫(kù)來說,我們可以用Manage Studio界面或者存儲(chǔ)過程。但是對(duì)于每一種方法都必須保證沒有用戶使用這個(gè)數(shù)據(jù)庫(kù).接下來所講的都是對(duì)于用命令來分離或附加一個(gè)數(shù)據(jù)庫(kù)。
對(duì)于用Manage Studio自己看著界面操作就可以應(yīng)付了。
分離數(shù)據(jù)庫(kù):
對(duì)于用存儲(chǔ)過程來分離數(shù)據(jù)庫(kù),如果發(fā)現(xiàn)無法終止用戶鏈接,可以使用ALTER DATABASE命令,并利用一個(gè)能夠中斷已存在鏈接的終止選項(xiàng)來把數(shù)據(jù)庫(kù)設(shè)置為SINGLE_USER模式,設(shè)置為SIGLE_USER代碼如下:
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE下面是分離數(shù)據(jù)庫(kù)的CMD命令
EXEC sp_detach_db DatabaseName一旦一個(gè)數(shù)據(jù)庫(kù)分離成功,從SQL Server角度來看和刪除這個(gè)數(shù)據(jù)庫(kù)沒有什么區(qū)別。
附加數(shù)據(jù)庫(kù):
對(duì)于附加數(shù)據(jù)庫(kù),可以使用sp_attach_db存儲(chǔ)過程,或者使用帶有FOR ATTACH選項(xiàng)的CREATE DATABASE命令,在SQL Server2005或更高的版本中推薦使用后者,前者是為了向前兼容,它正在逐漸淘汰,而后者更提供更多對(duì)文件的控制。
CREATE DATABASE databasename
ON (FILENAME = 'D:\Database\dbname.mdf')
FOR ATTACH | FOR ATTACH_REBUILD_LOG
然而對(duì)于這樣的附加,我們要注意幾個(gè)地方。因?yàn)樯婕暗街亟ㄈ罩尽?
1.對(duì)于一個(gè)讀/寫數(shù)據(jù)庫(kù),如果含有一個(gè)可用的日志文件,無論使用FOR ATTACH ,還是使用FOR ATTACH_REBULD_LOG,都是一樣,都不會(huì)對(duì)此數(shù)據(jù)庫(kù)重建日志文件。如果日志文件不可用或者物理上沒有該日志文件,使用FOR ATTACH或FOR ATTACH_REBULID_LOG都會(huì)重建日志文件,所以如果我們復(fù)制一個(gè)帶有大量日志文件的數(shù)據(jù)庫(kù)到另一臺(tái)服務(wù)器中,就可以只復(fù)制.mdf文件,不用復(fù)制日志文件,然后使用FOR ATTACH_REBULD_LOG選項(xiàng)重建日志。條件是這臺(tái)服務(wù)器將主要使用或只用改數(shù)據(jù)庫(kù)的副本進(jìn)行讀操作。
2.對(duì)于一個(gè)只讀數(shù)據(jù)庫(kù),就有點(diǎn)區(qū)別了,如果日志文件不可用,那么就不能更新主文件,所以也就不能重建日志,因此當(dāng)我們附加一個(gè)只讀數(shù)據(jù)庫(kù)是,必須在FOR ATTACH從句中指定日志文件。
如果使用附加數(shù)據(jù)庫(kù)重建了日志文件。使用FOR ATTACH_REBUILD_LOG會(huì)中斷日志備份鏈,進(jìn)行這種操作之前最好做一次數(shù)據(jù)庫(kù)完全備份。
使用sp_detach_db存儲(chǔ)過程一個(gè)好處就是可以保證一個(gè)數(shù)據(jù)庫(kù)是被干凈的關(guān)閉,那日志文件就不是附加數(shù)據(jù)庫(kù)所必須的,我們可以使用FOR ATTACH_REBUILD_LOG命令重建日志,得到一個(gè)最小的日志文件。也算是一種快速收縮一個(gè)大日志文件的方法。
Author:興百放
Web:Http://xbf321.cnblogs.com
分離數(shù)據(jù)庫(kù):
對(duì)于用存儲(chǔ)過程來分離數(shù)據(jù)庫(kù),如果發(fā)現(xiàn)無法終止用戶鏈接,可以使用ALTER DATABASE命令,并利用一個(gè)能夠中斷已存在鏈接的終止選項(xiàng)來把數(shù)據(jù)庫(kù)設(shè)置為SINGLE_USER模式,設(shè)置為SIGLE_USER代碼如下:
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE下面是分離數(shù)據(jù)庫(kù)的CMD命令
EXEC sp_detach_db DatabaseName一旦一個(gè)數(shù)據(jù)庫(kù)分離成功,從SQL Server角度來看和刪除這個(gè)數(shù)據(jù)庫(kù)沒有什么區(qū)別。
附加數(shù)據(jù)庫(kù):
對(duì)于附加數(shù)據(jù)庫(kù),可以使用sp_attach_db存儲(chǔ)過程,或者使用帶有FOR ATTACH選項(xiàng)的CREATE DATABASE命令,在SQL Server2005或更高的版本中推薦使用后者,前者是為了向前兼容,它正在逐漸淘汰,而后者更提供更多對(duì)文件的控制。
CREATE DATABASE databasename
ON (FILENAME = 'D:\Database\dbname.mdf')
FOR ATTACH | FOR ATTACH_REBUILD_LOG
然而對(duì)于這樣的附加,我們要注意幾個(gè)地方。因?yàn)樯婕暗街亟ㄈ罩尽?
1.對(duì)于一個(gè)讀/寫數(shù)據(jù)庫(kù),如果含有一個(gè)可用的日志文件,無論使用FOR ATTACH ,還是使用FOR ATTACH_REBULD_LOG,都是一樣,都不會(huì)對(duì)此數(shù)據(jù)庫(kù)重建日志文件。如果日志文件不可用或者物理上沒有該日志文件,使用FOR ATTACH或FOR ATTACH_REBULID_LOG都會(huì)重建日志文件,所以如果我們復(fù)制一個(gè)帶有大量日志文件的數(shù)據(jù)庫(kù)到另一臺(tái)服務(wù)器中,就可以只復(fù)制.mdf文件,不用復(fù)制日志文件,然后使用FOR ATTACH_REBULD_LOG選項(xiàng)重建日志。條件是這臺(tái)服務(wù)器將主要使用或只用改數(shù)據(jù)庫(kù)的副本進(jìn)行讀操作。
2.對(duì)于一個(gè)只讀數(shù)據(jù)庫(kù),就有點(diǎn)區(qū)別了,如果日志文件不可用,那么就不能更新主文件,所以也就不能重建日志,因此當(dāng)我們附加一個(gè)只讀數(shù)據(jù)庫(kù)是,必須在FOR ATTACH從句中指定日志文件。
如果使用附加數(shù)據(jù)庫(kù)重建了日志文件。使用FOR ATTACH_REBUILD_LOG會(huì)中斷日志備份鏈,進(jìn)行這種操作之前最好做一次數(shù)據(jù)庫(kù)完全備份。
使用sp_detach_db存儲(chǔ)過程一個(gè)好處就是可以保證一個(gè)數(shù)據(jù)庫(kù)是被干凈的關(guān)閉,那日志文件就不是附加數(shù)據(jù)庫(kù)所必須的,我們可以使用FOR ATTACH_REBUILD_LOG命令重建日志,得到一個(gè)最小的日志文件。也算是一種快速收縮一個(gè)大日志文件的方法。
Author:興百放
Web:Http://xbf321.cnblogs.com
您可能感興趣的文章:
- SQLServer 附加數(shù)據(jù)庫(kù)后出現(xiàn)只讀或失敗的解決方法
- mssql server 數(shù)據(jù)庫(kù)附加不上解決辦法分享
- sql2008 附加數(shù)據(jù)庫(kù)時(shí)出現(xiàn)錯(cuò)誤5123提示的解決方法
- SQL SERVER 2008 無法附加數(shù)據(jù)庫(kù)的解決方法
- SQL2008 附加數(shù)據(jù)庫(kù)提示5120錯(cuò)誤解決方法
- SQL Server 數(shù)據(jù)庫(kù)分離與附加(圖文教程)
- Sqlserver 2005附加數(shù)據(jù)庫(kù)時(shí)出錯(cuò)提示操作系統(tǒng)錯(cuò)誤5(拒絕訪問)錯(cuò)誤5120的解決辦法
- 附加到SQL2012的數(shù)據(jù)庫(kù)就不能再附加到低于SQL2012的數(shù)據(jù)庫(kù)版本的解決方法
- sql server2012附加數(shù)據(jù)庫(kù)問題解決方法
- SQL附加數(shù)據(jù)庫(kù)失敗問題的解決方法
相關(guān)文章
SQL Server 2016的數(shù)據(jù)庫(kù)范圍內(nèi)的配置詳解
這篇文章主要介紹了SQL Server 2016的數(shù)據(jù)庫(kù)范圍內(nèi)的配置詳解的相關(guān)資料,需要的朋友可以參考下2016-03-03SQL server中字符串逗號(hào)分隔函數(shù)分享
繼SQl -Function創(chuàng)建函數(shù)數(shù)據(jù)庫(kù)輸出的結(jié)果用逗號(hào)隔開,在開發(fā)中也有許多以參數(shù)的形式傳入帶逗號(hào)字條串參數(shù),需要的朋友可以參考下2016-10-10SQLServer實(shí)現(xiàn)Ungroup操作的示例代碼
本文主要介紹了SQLServer實(shí)現(xiàn)Ungroup操作的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07sql自動(dòng)化檢查和分析工具 之soar和soar-web 安裝和使用體驗(yàn)
這篇文章主要介紹了sql自動(dòng)化檢查和分析工具 之soar和soar-web 安裝和使用體驗(yàn),本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04SQL Server誤區(qū)30日談 第5天 AWE在64位SQL SERVER中必須開啟
在坊間流傳的有關(guān)AWE的設(shè)置的各種版本讓人非常困惑。比如說如何設(shè)置起作用,如何設(shè)置不起作用,在32位和64位上是否需要AWE等2013-01-01實(shí)例學(xué)習(xí)SQL的Select命令
實(shí)例學(xué)習(xí)SQL的Select命令...2006-12-12