Thomas Asked: 2014-04-16 09:07:06 +0800 CST2014-04-16 09:07:06 +0800 CST 2014-04-16 09:07:06 +0800 CST 将 NOLOCK 与 CDC 捕获表一起使用 772 在使用 SQL Server 的更改数据捕获时,我注意到 fn_cdc_get_all_changes_... 表值函数在查询捕获表时都使用 NOLOCK。在查询捕获表时,这是推荐的做法吗?如果是,为什么? sql-server change-data-capture 1 个回答 Voted Best Answer RLF 2014-04-16T11:54:08+08:002014-04-16T11:54:08+08:00 看来这是在 2008 年的时间段内添加的。您可以在以下位置看到标题为“MSIT-MSO:在查询 CDC TVF 中的 cdc._CT 表时使用 NOLOCK”的连接项: http://connect.microsoft.com/SQLServer/feedback/details/331486/msit-mso-use-nolock-while-querying-the-cdc-captureinstance-ct-table-in-cdc-tvf 有趣的是,请求是为了防止 CDC 更新阻止选择数据的 CDC 查询。此更改已于 2008 年 3 月 18 日发布到 Connect 项目。 考虑到潜在的变化速度,这对于这种情况可能是有意义的,但它不会使 NOLOCK 成为其他代码的普遍好主意。
看来这是在 2008 年的时间段内添加的。您可以在以下位置看到标题为“MSIT-MSO:在查询 CDC TVF 中的 cdc._CT 表时使用 NOLOCK”的连接项:
http://connect.microsoft.com/SQLServer/feedback/details/331486/msit-mso-use-nolock-while-querying-the-cdc-captureinstance-ct-table-in-cdc-tvf
有趣的是,请求是为了防止 CDC 更新阻止选择数据的 CDC 查询。此更改已于 2008 年 3 月 18 日发布到 Connect 项目。
考虑到潜在的变化速度,这对于这种情况可能是有意义的,但它不会使 NOLOCK 成为其他代码的普遍好主意。