SQLServer之分離數據庫

分離數據庫注意事項

要求具備 db_owner 固定數據庫角色中的成員資格。數據庫

能夠分離數據庫的數據和事務日誌文件,而後將它們從新附加到同一或其餘 SQL Server實例。 若是要將數據庫更改到同一計算機的不一樣 SQL Server 實例或要移動數據庫,分離和附加數據庫會頗有用。bash

分離數據庫是指將數據庫從 SQL Server 實例中刪除,但使數據庫在其數據文件和事務日誌文件中保持不變。 以後,就可使用這些文件將數據庫附加到任何 SQL Server實例,包括分離該數據庫的服務器。服務器

若是存在下列任何狀況,則不能分離數據庫:併發

已複製併發布數據庫。 若是進行復制,則數據庫必須是未發佈的。 必須經過運行 sp_replicationdboption禁用發佈後,才能分離數據庫。工具

若是沒法使用 sp_replicationdboption,能夠經過運行 sp_removedbreplication刪除複製。優化

數據庫中存在數據庫快照。ui

必須首先刪除全部數據庫快照,而後才能分離數據庫。spa

不能分離或附加數據庫快照。日誌

該數據庫正在某個數據庫鏡像會話中進行鏡像。code

除非終止該會話,不然沒法分離該數據庫。

數據庫處於可疑狀態。 沒法分離可疑數據庫;必須將數據庫設爲緊急模式,才能對其進行分離。

數據庫爲系統數據庫。

分離只讀數據庫將會丟失有關差別備份的差別基準的信息。

分離數據庫時生成的錯誤會阻止徹底關閉數據庫和從新生成事務日誌。 收到錯誤消息後,請執行下列更正操做:

從新附加與數據庫關聯的全部文件,而不單單是主文件。

解決致使生成錯誤消息的問題。

再次分離數據庫。

使用SSMS數據庫工具分離數據庫

一、鏈接服務器-》展開服務器-》選擇數據庫-》右鍵點擊-》選擇任務-》選擇分離。

二、在分離數據庫對話框-》右邊要分離得數據庫對話框-》數據庫名稱:列出要分離的數據庫-》刪除鏈接:斷開與指定數據庫的鏈接,不能分離鏈接爲活動狀態的數據庫-》更新統計信息:默認狀況下,分離操做將在分離數據庫時保留過時的優化統計信息;若要更新現有的優化統計信息,請單擊此複選框-》狀態:顯示如下狀態之一: 就緒或 未就緒-》消息:當數據庫進行了複製操做,則 狀態爲未就緒, 消息列將顯示已複製數據庫。若是數據庫有一個或多個活動鏈接,則狀態爲未就緒,消息列顯示<number_of_active_connections> 個活動鏈接,例如:1 個活動鏈接。 在分離數據庫以前,須要經過選擇 刪除鏈接斷開全部活動鏈接。

三、數據庫分離結果。

使用T-SQL腳本分離數據庫

語法

--聲明數據庫引用
use other_database_name;
go
 
--語法
exec sp_detach_db [@dbname=] 'database_name' [,[@skipchecks= ] 'skipchecks'] [,[@keepfulltextindexfile=] 'KeepFulltextIndexFile' ];
go
複製代碼

語法註釋

--語法示例

--other_database_name

--聲明當前使用的數據庫不是要分離的數據庫

--[@dbname=]'database_name'

--要分離的數據庫的名稱。database_name是sysname值,默認值爲NULL。

--[@skipchecks =]'skipchecks'

--指定跳過仍是運行update statistic。同時將skipchecks是nvarchar(10)值,默認值爲NULL。

--若要跳過更新統計信息,請指定,則返回 true。 若要顯式運行更新統計信息,請指定false。

--默認狀況下,執行update statistic可更新有關表和索引中的數據的信息。 對於要移動到只讀介質的數據庫,執行 UPDATE STATISTICS 很是有用。

--[@keepfulltextindexfile=] 'KeepFulltextIndexFile'

--指定在數據庫分離操做過程當中不會刪除與所分離的數據庫關聯的全文索引文件。

--KeepFulltextIndexFile是nvarchar(10)值,該值具備默認值爲true。

--若是KeepFulltextIndexFile是false、 與數據庫關聯的全文索引的全部文件和全文索引的元數據被刪除,除非數據庫是隻讀的。

--若是爲NULL,則返回true,全文索引相關的元數據保留。

--@keepfulltextindexfile中的將來版本將刪除參數SQL Server。請不要在新的開發工做中使用此參數,並儘快修改當前仍在使用此參數的應用程序。

示例

--聲明數據庫引用
use master;
go
 
--進行數據庫分離
--方式一
--exec sp_detach_db @dbname='testss'
--,@skipchecks='true'
--,@keepfulltextindexfile='true'; 
 
--方式二
exec sp_detach_db 'testss'
,'true'
,'true';
go
複製代碼

示例結果:T-SQL腳本執行完畢須要在對象資源管理器刷新才能看到分離結果。

相關文章
相關標籤/搜索