小编SQL*_*ini的帖子

无法恢复数据库备份,因为它被其他连接访问

--first command

use master

Go
-- second command
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

Go 
-- Third command
RESTORE DATABASE [MyDB] FROM  DISK = N'D:\Restore_Backup\Restore_05042015\AcctDB.bak' 
WITH  FILE = 1,  
MOVE N' AcctDB ' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\WFStageAcct.mdf',  
MOVE N' AcctDB _log' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\WFStageAcct_log.ldf',  
NOUNLOAD,  
REPLACE,  
STATS = 10

GO

--forth command

ALTER DATABASE MyDB SET MULTI_USER 

Go
Run Code Online (Sandbox Code Playgroud)

我运行上面的命令,一一恢复不同服务器上的数据库。但是有时我更改为单用户模式后无法恢复数据库,因为它被其他连接访问。如果我运行除了最后一部分之外的整个脚本会阻止其他连接,所以我将成为唯一的用户?

sql-server restore

5
推荐指数
2
解决办法
1792
查看次数

Ola Hallengren 备份失败

我已经在我的 SQL Server 2008R2 服务器上使用 Ola Hallengren 解决方案近两年了。昨晚备份失败,系统数据库和用户数据库均出现以下错误。

系统数据库错误示例:

日期和时间:2016-05-31 20:00:01 命令:DECLARE @ReturnCode int EXECUTE @ReturnCode = [master].dbo.xp_create_subdir N'E:\SQLBackups\Server1\master\FULL' IF @ReturnCode <> 0 RAISERROR('创建目录时出错。', 16, 1) HResult 0x5620,级别 16,状态 1 xp_create_subdir() 返回错误 183,“当该文件已存在时无法创建文件。” 消息 50000,级别 16,状态 1,服务器 Server1,第 1 行 创建目录时出错。结果:失败持续时间:00:00:00 日期和时间:2016-05-31 20:00:01

用户数据库错误示例:

日期和时间:2016-05-31 20:00:12 数据库:[Dummy_1] 状态:ONLINE 待机:无 可更新性:READ_WRITE 用户访问:MULTI_USER 是否可访问:是 恢复模式:SIMPLE 差分基 LSN:423000000014100036 上次日志备份 LSN: 342000000037500001 日期和时间:2016-05-31 20:00:12 命令:DECLARE @ReturnCode int EXECUTE @ReturnCode = [master].dbo.xp_create_subdir N'E:\SQLBackups\Server1\Dummy_1\ReturnCode <>IF 0 RAISERROR('创建目录时出错。', 16, 1) HResult 0x5620,级别 16,状态 1 xp_create_subdir() 返回错误 183,“当该文件已存在时无法创建文件。” …

sql-server backup sql-server-2008-r2 jobs ola-hallengren

4
推荐指数
1
解决办法
5686
查看次数

在恢复之前删除所有用户连接哪种方法更好?更改为单用户模式还是使数据库脱机?

当我们将数据库从 prod 恢复到 dev 时,哪种方法更好地断开访问数据库的其他连接?我使用的是 SQL Server 2008r2

1. 更改为单用户模式

use master

Go

ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

Go 



RESTORE DATABASE [MyDB] FROM  DISK = N'D:\Restore_Backup\Restore_05042015\DB.bak' 
WITH  FILE = 1,  
MOVE N'DB' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB.mdf',  
MOVE DB_log' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB_log.ldf',  
NOUNLOAD,  
REPLACE,  
STATS = 10

GO


ALTER DATABASE MyDB SET MULTI_USER 

Go
Run Code Online (Sandbox Code Playgroud)

2. 数据库下线并恢复数据库

USE master

GO

ALTER DATABASE MyDB
SET OFFLINE WITH ROLLBACK IMMEDIATE

GO


RESTORE DATABASE [MyDB] FROM  DISK = N'D:\Restore_Backup\Restore_05042015\DB.bak' …
Run Code Online (Sandbox Code Playgroud)

sql-server restore

3
推荐指数
1
解决办法
1629
查看次数

为多个 ola 备份生成还原脚本时出现问题

我正在使用 Ola 进行维护解决方案。我有 300 个数据库,我想使用脚本而不是一个一个地还原这些数据库。我准备了以下脚本来生成恢复脚本。

SELECT 
   'RESTORE DATABASE [' + name + ']'  +'
    FROM DISK = ''C:\Backup3\PC1800\'+name+'\FULL\PC1800_'+name+'_FULL_20160504_162534.bak''' + ' 
    WITH  FILE = 1, NOUNLOAD,  REPLACE,  STATS = 10
    GO'    
FROM sys.databases
Run Code Online (Sandbox Code Playgroud)

它为所有数据库生成恢复脚本。

例如对于数据库 AdventureWorks2008

RESTORE DATABASE [AdventureWorks2008]FROM DISK = 
          'C:\Backup3\PC1800\AdventureWorks2008\FULL\PC1800_AdventureWorks2008_FULL_20160504_162534.bak' 
        WITH  FILE = 1, NOUNLOAD,  REPLACE,  STATS = 10  

GO
Run Code Online (Sandbox Code Playgroud)

问题:

_162534为所有数据库生成的问题。但是备份文件名的第二部分因数据库而异。

有没有办法可以更改脚本,以便它可以从备份文件中生成正确的数字,而不是所有数据库的 162534?

经验: PC1800_AdventureWorks2008R2_FULL_20160504_162538

sql-server restore ola-hallengren

0
推荐指数
1
解决办法
1232
查看次数