我的环境如下: VMWare 5.5 vitalized server MS Windows Server 2008R2 Enterprise domain and SQL Server 2008 R2 Enterprise。使用光纤通道连接的集中存储。
我的SQL Server DB
. 我有 2 个file groups
:一个是实时数据 (FG1),第二个是历史数据 (HDG)。
第二个文件组是read-only
. 每个月我都会在分区中移动 - 我将新数据(来自上个月)添加到历史数据中。这个过程是自动的。
我们将数据库移至新服务器。最初,我不得不手动完成这个过程。在此操作期间,我的镜像发生故障(在操作 3 之后 - 请参阅下面的流程)并出现以下错误:
在主服务器上:
日志中的第 0 行:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid84
Message
Setting database option MULTI_USER to ON for database MYDB.
日志中的第 1 行:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid18s
Message
Error: 1453, Severity: 16, State: 1.
日志中的第 2 行:
Date 15.6.2015 20:54:11
Log SQL Server (Current - 16.6.2015 07:55:00)
Source spid18s
Message
'TCP://10.201.27.154:5022', the remote mirroring partner for database 'MYDB', encountered error 823, status 3, severity 24. Database mirroring has been suspended. Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.
备注:我在旧服务器上多次自动执行此操作,但从未遇到过此类错误。
在镜像服务器上:
日志中的第 1 行:
Date 15.6.2015 20:54:11
Log SQL Server (Archive #3 - 15.6.2015 21:33:00)
Source spid17s
Message
Error: 823, Severity: 24, State: 3.
日志中的第 2 行:
Date 15.6.2015 20:54:11
Log SQL Server (Archive #3 - 15.6.2015 21:33:00)
Source spid17s
Message
The operating system returned error 5(Access is denied.) to SQL Server during a write at offset 0000000000000000 in file 'e:\Databases\MYDB_HISTRICAL.ndf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
我的过程如下:
1.我对数据库进行了多次备份(完整备份、文件组备份和 TLog 备份)。
2.我将 DB 设置为RESTRICTED_USER
(允许通过脚本删除历史文件组标志的只读)。
2a. 我删除READ-ONLY
了我的历史文件组的标志。
3.我把DB设置MULTI_USER
为允许我们的软件正常运行。
4.我更新分区以便将数据移动到历史文件组。
5.我重复步骤2、2a和3,这样我就可以再次将历史文件组设置为只读。
6.我再次进行备份。
有谁知道我为什么会收到该错误?
编辑:我们在程序的不同阶段收到同样的问题。这是镜像崩溃的唯一情况,所以我想问题出在程序内部,但我不明白为什么!
我们发现了问题。这是 SQL Server 中的错误。当我们设置时
READ_WRITE
,命令没有正确传输到mirror
数据库中。当镜像服务器上的脚本开始更改partitions
时发生错误。之后同步被破坏并且镜像上的数据库被锁定(处于suspended
状态)。我们通过将 SQL Server 更新到最新版本来解决此问题(我们的初始版本没有 SP)。