SQL Server 數據庫備份和還原


一、SQL命令

 

備份
BACKUP DATABASE TestDb TO DISK='d:\TestDb.bak'
還原
RESTORE DATABASE TestDb FROM DISK='d:\TestDb.bak'


二、使用管理工具

  文章較長,但比較簡單,直接給鏈接:https://www.cnblogs.com/luckyboy/p/5564880.html

三、使用sqlcmd

參考文章:https://www.cnblogs.com/equations/p/6821546.html

備份

sqlcmd -S . -E -Q "BACKUP DATABASE AbpFirst TO DISK='d:\AbpFirst.bak'"

還原

sqlcmd -S . -E -Q "RESTORE DATABASE AbpFirst FROM DISK='d:\AbpFirst.bak'"

 

四、常見問題

1.還原失敗

原因:Sql server還原失敗,提示:數據庫正在使用,無法獲得對數據庫的獨占訪問權

原文:https://blog.csdn.net/u011127019/article/details/54140595

解決方案1.

如果你使用管理工具還原數據庫並且在Microsoft SQL Server Management Studio 2016或以上版本的話,可以在還原的時候勾選"關閉到目標數據庫的現有鏈接"

 

解決方案2:

如果你的SqlServer Management Studio的版本比較低,可以設置數據庫為單用戶模式,執行完還原操作后,恢復為多用戶模式

設置方式:選中要還原的數據庫-->屬性-->選項-->限制訪問
該值從MULTI_USER修改為SINGLE_USER,此時該數據庫就會顯示為單用戶模式
這是GUI的模式,語句的辦法比較簡單

---設置數據庫為單用戶模式
USE MASTER
GO
ALTER DATABASE eol_tcgroup SET SINGLE_USER WITH ROLLBACK IMMEDIATE;   
GO
---設置數據庫為多用戶模式
USE MASTER
GO
ALTER DATABASE eol_tcgroup SET MULTI_USER WITH ROLLBACK IMMEDIATE;   
GO

解決方案3:

完全使用T-Sql的方式,執行備份數據庫操作

use master
go
---聲明變量
declare @dbName nvarchar(max)='Mvc_HNHZ';
declare @dbFullName nvarchar(max)='E:\NewWork\Web\backup\test1.bak';
--1.1修改為單用模式
 exec(N'ALTER DATABASE '+@dbName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE');
--1.2結束鏈接進程
    DECLARE @kid varchar(max)  
    SET @kid=''  
    SELECT @kid=@kid+'KILL '+CAST(spid as Varchar(10))  FROM master..sysprocesses  
    WHERE dbid=DB_ID(@dbName)  ;
    EXEC(@kid) ;
--2.執行還原語句
   restore database @dbName from  disk=@dbFullName
   with replace  --覆蓋現有的數據庫
--3.重置數據庫為多用戶模式
 exec(N'ALTER DATABASE '+@dbName+' SET MULTI_USER WITH ROLLBACK IMMEDIATE');

 

2.強制斷開數據庫已有連接

USE master
GO

ALTER DATABASE [DBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

--查看是否還有用戶連接
SELECT * FROM sys.[sysprocesses] WHERE DB_NAME([dbid])='DBName'
GO

ALTER DATABASE [DBName] SET MULTI_USER 
GO

 

 

 

 

 

 

 

 

 

 

 

其他相關文章:

[解決方案]在Sql Server 2008/2005 數據庫還原出現 3154錯誤

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM