2017-03-23 145 views
1

我有一個實時數據庫。我需要創建一個包含活動數據的測試數據庫,但我已經設置了一個錯誤。我試圖通過從「實時數據庫.bak」中恢復來創建這個新的錯誤消息,但是出現了一條錯誤消息,說因爲數據庫正在使用而無法執行該過程。另外,我不知道爲什麼,但在此之後,實時數據庫開始恢復並繼續運行,直到陷入停滯狀態。它沒有完成恢復,我必須強制停止,刪除實時數據庫並從頭開始恢復。檢查活動日誌,似乎在創建數據庫日誌備份失敗後進入恢復模式,這正是我嘗試使用.bak創建新測試數據庫後發生的情況。在SQL Server 2014中複製數據庫

我在做什麼錯?是否有另一種方法來複制實時數據庫以將其用作測試數據庫?

注意:我已經完成了沒有人使用數據庫或連接到數據庫但沒有成功的過程。

+0

沒有*命令*就無法提供幫助。無論如何,備份/恢復沒有任何問題。所有數據庫都是「實時」的。您是否嘗試恢復原始數據庫?你指定了一個新名字嗎? –

+0

@PanagiotisKanavos我做的是:右鍵單擊數據庫列表,恢復數據庫,選擇原始設備,選擇.bak,選擇命運,重命名數據庫,更改日誌路徑和文件路徑,然後轉到。 –

回答

0

您需要重新定位/重命名文件。只是更改要還原的數據庫名稱可能不會更改執行還原時SQL嘗試實際創建的數據庫文件和日誌文件。轉到「還原數據庫」的「選項」頁面,並確保文件指向有效位置,而不是嘗試使用與實時數據庫相同的文件。

+0

OP應該首先重命名數據庫。這聽起來像他試圖恢復*原始*數據庫 –

0
--At First take ypur database backup and restore it as DatabaseName_Test and also change Datafiles As database _test.mdf and DatabaseName_test_log.ldf 
--try to follow as below script 
USE master 
GO 
BACKUP DATABASE [DatabaseName] 
TO DISK = N'D:\SQLSERVER_Installation\setup\MSSQL12.SQLSERVER2014\MSSQL\Backup\DatabaseName.bak' 
WITH COPY_ONLY, NOFORMAT, NOINIT, 
NAME = N'DatabaseName-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10 
GO 

USE [master] 

RESTORE DATABASE [DatabaseName_Test] FROM 
DISK = N'D:\SQLSERVER_Installation\setup\MSSQL12.SQLSERVER2014\MSSQL\Backup\DatabaseName.bak' 
WITH FILE = 2, 
MOVE N'DatabaseName' TO N'D:\SQLSERVER_Installation\setup\MSSQL12.SQLSERVER2014\MSSQL\DATA\DatabaseName_test.mdf', 
MOVE N'DatabaseName_log' TO N'D:\SQLSERVER_Installation\setup\MSSQL12.SQLSERVER2014\MSSQL\DATA\DatabaseName_test_log.ldf', NOUNLOAD, STATS = 5 

GO 
+0

這有幫助,因爲?如果你想說OP應該改變數據庫名稱而不是在原始數據庫上進行恢復,請將其寫入答案本身 –

+0

@ Sreenu131我這樣做了,但是使用接口而不是查詢。並拋出相同的消息,指出由於數據庫正在使用而無法恢復。我不想碰它,因爲我擔心活db會重新恢復。 –