一、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錯誤