igelr Asked: 2019-07-09 00:02:43 +0800 CST2019-07-09 00:02:43 +0800 CST 2019-07-09 00:02:43 +0800 CST SQL Server 紧急模式下的事务 772 我知道虽然数据库被标记为可疑用户无法启动新事务,但唯一的访问是通过紧急模式,它只提供只读访问权限。我想知道在这种情况下如何处理交易 首先当一个数据库被标记为可疑时 其次,当我们使用紧急模式时 他们是否正常回滚? 谢谢。 sql-server transaction 2 个回答 Voted Best Answer Shanky 2019-07-09T01:09:25+08:002019-07-09T01:09:25+08:00 首先当一个数据库被标记为可疑时 可能还有其他原因,但最常见的原因是数据库的数据文件或日志文件出现问题,并且在 SQL Server 重新启动后经历了崩溃恢复,因为 SQL Server 由于损坏而无法恢复数据库,它必须将数据库标记为可疑的文件(数据或日志)之一中的信息不正确或缺失。了解如何使数据库变得可疑(仅用于测试目的。不用说,请不要在 Prod 甚至 UAT 上尝试此操作)。 其次,当我们使用紧急模式时。 在任何情况下,如果您想访问数据库的内容但由于它已被标记为可疑而无法访问。然后,您可以将数据库置于紧急模式,这是提供给您的“不一致的数据库”,而无需完全进行崩溃恢复。请注意,您可能并不总是成功。 他们是否正常回滚? 当您使用紧急模式时,您失去了使数据库联机的所有可能性,因此您使用紧急模式强制它“以不一致的数据联机”。当您这样做时,不会发生任何恢复,您只会获得对不一致数据库的读取访问权限。在此之后,当您运行 checkdb 时,repair_allow_data_loss将采取各种措施使数据库以一致的状态联机,这样做repair_allow_data_loss将删除任何可能阻止数据库联机的事情。 将数据库置于紧急状态然后恢复它不应被视为解决可疑数据库问题的方法。从良好的备份中恢复应该是首选方式。 还建议您阅读Paul Randal 博客 Ahmad Abuhasna 2019-07-09T01:14:59+08:002019-07-09T01:14:59+08:00 首先,我想定义什么是事务意味着:事务是针对数据库执行的工作单元。事务是按逻辑顺序完成的工作单元或序列,无论是由用户以手动方式还是由某种数据库程序自动完成。 当事务被发送到数据库服务器时,它将保留一些内存,定位数据库位置,尝试访问它,然后开始在数据库中搜索数据位置。 SQL Server 数据库由于以下许多原因而进入可疑模式是最常见的,如果数据库发生任何重大问题,它将变得完全\部分无法访问,并且 SQL Server 无法在其上启动事务。 硬件故障 数据库服务器关闭不当 数据库文件损坏 不可用的设备文件:如果文件 不可用的数据库文件 操作系统使用的数据库资源 SQL Server 紧急模式(修复“不一致数据库”的修复模式)用于在数据库可访问时从任何故障中恢复数据库,因为数据库处于修复模式,您可以执行您可以在某些系统表上进行编辑,并从正常读取表以确保数据库在修复后不会有任何问题。
可能还有其他原因,但最常见的原因是数据库的数据文件或日志文件出现问题,并且在 SQL Server 重新启动后经历了崩溃恢复,因为 SQL Server 由于损坏而无法恢复数据库,它必须将数据库标记为可疑的文件(数据或日志)之一中的信息不正确或缺失。了解如何使数据库变得可疑(仅用于测试目的。不用说,请不要在 Prod 甚至 UAT 上尝试此操作)。
在任何情况下,如果您想访问数据库的内容但由于它已被标记为可疑而无法访问。然后,您可以将数据库置于紧急模式,这是提供给您的“不一致的数据库”,而无需完全进行崩溃恢复。请注意,您可能并不总是成功。
当您使用紧急模式时,您失去了使数据库联机的所有可能性,因此您使用紧急模式强制它“以不一致的数据联机”。当您这样做时,不会发生任何恢复,您只会获得对不一致数据库的读取访问权限。在此之后,当您运行 checkdb 时,
repair_allow_data_loss
将采取各种措施使数据库以一致的状态联机,这样做repair_allow_data_loss
将删除任何可能阻止数据库联机的事情。将数据库置于紧急状态然后恢复它不应被视为解决可疑数据库问题的方法。从良好的备份中恢复应该是首选方式。
还建议您阅读Paul Randal 博客
首先,我想定义什么是事务意味着:事务是针对数据库执行的工作单元。事务是按逻辑顺序完成的工作单元或序列,无论是由用户以手动方式还是由某种数据库程序自动完成。
当事务被发送到数据库服务器时,它将保留一些内存,定位数据库位置,尝试访问它,然后开始在数据库中搜索数据位置。
SQL Server 数据库由于以下许多原因而进入可疑模式是最常见的,如果数据库发生任何重大问题,它将变得完全\部分无法访问,并且 SQL Server 无法在其上启动事务。
SQL Server 紧急模式(修复“不一致数据库”的修复模式)用于在数据库可访问时从任何故障中恢复数据库,因为数据库处于修复模式,您可以执行您可以在某些系统表上进行编辑,并从正常读取表以确保数据库在修复后不会有任何问题。