簡體   English   中英

SQL Server備份還原問題?

[英]SQL Server backup restore issues?

好的,所以我遇到了一些問題 - 我在SQL Server上執行了一些代碼,並沒有意識到我沒有選擇WHERE位。 當然,當我看到"608 rows affected"而非"1 row affected" ,我嚇壞了一下。

幸運的是,我保存了備份,但出於某種原因,我遇到了一些問題。 現在,我把服務器關閉了,所以我知道它沒有被任何人使用,但它給了我以下錯誤

“服務器'myserver'恢復失敗。

System.Data.sqlclient.sqlerror:無法獲取獨占訪問權限,因為數據庫正在使用中。 (Microsoft.SqlServer.Smo)”

我看到了我應該使用的東西

Alter Database Databases
SET SINGLE_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE PRODUCT
FROM DISK = ''

但我對這段代碼有三個保留意見。 首先,我完全不確定如何重新打開multi_user。 其次,我不知道程序存儲備份的位置。 第三,這個SQL有點高於我的頭 - 老實說,我對這門語言比較新,所以我不確定這會對事情產生什么影響。

有人對我的煩惱有任何答案嗎?

我可能會建議您不要從備份中覆蓋現有數據庫,而是使用不同的數據庫名稱來恢復備份...這樣您就可以並排使用當前和以前的數據庫。

然后,您只需編寫一個更新語句即可從該特定表中恢復數據,而不是重置整個數據庫。

編輯:細節取決於您的環境,但恢復將看起來像這樣:

restore database PRODUCT_OLD
from disk='C:\PRODUCT.bak'
with
    move 'PRODUCT_Data' to 'C:\PRODUCT_OLD_Data.MDF',
    move 'PRODUCT_Log' to 'C:\PRODUCT_OLD_Log.LDF'

然后更新聲明也將基於您的特定表...

在數據庫上點擊任務 - > takeoffline ,當它成功做同樣的事情,但把它Bring Online然后嘗試恢復你的數據庫

將數據庫設置為單個用戶是正確的。 當您完成修復后,您將執行此操作

alter database YourDb
set multi_user

至於.bak文件所在的位置,您必須在恢復之前找到它。

害怕。

好的,有些事要檢查:

  1. 確保您是唯一連接到服務器的人。
  2. 確保沒有其他應用程序,Web服務器,應用程序服務器等與您的數據庫保持連接。
  3. 確保您的SQL管理器沒有打開數據庫中的表或其他對象的窗口。

那么你應該能夠用單個用戶的東西進行恢復。

轉到活動監視器,查看用戶是否仍然登錄,然后使用相應的數據庫終止該用戶的進程。 然后繼續恢復備份

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM