Ao usar o Change Data Capture do SQL Server, noto que todas as funções com valor de tabela fn_cdc_get_all_changes_... usam NOLOCK ao consultar as tabelas de captura. Esta é uma prática recomendada ao consultar as tabelas de captura e, em caso afirmativo, por quê?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Parece que isso foi adicionado no período de 2008. Você pode ver o item Connect com o título "MSIT-MSO: Use NOLOCK ao consultar a tabela cdc._CT no CDC TVF" em:
http://connect.microsoft.com/SQLServer/feedback/details/331486/msit-mso-use-nolock-while-querying-the-cdc-captureinstance-ct-table-in-cdc-tvf
É interessante que a solicitação foi feita para evitar que as atualizações do CDC bloqueiem as consultas do CDC que selecionam os dados. Esta alteração foi postada no item Conectar em 18/03/2008.
Considerando a velocidade potencial de mudança, isso pode fazer sentido para este caso, mas não faz do NOLOCK uma boa ideia para outro código.