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