Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como um SqlCacheDependency sabe quando se comunicar de volta com qualquer ouvinte quando os dados em uma tabela são alterados?


Uma nova tabela é criada em seu banco de dados que contém um nome da tabela na qual você deseja verificar atualizações e um número de alteração. Cada tabela que você configurou para sqldependency tem um gatilho configurado para atualizações/inserções que incrementa o changeid na nova tabela que acabei de descrever.

Seu modelo mental de como isso funciona está invertido. Seu aplicativo verifica o log para determinar se uma tabela foi alterada.

Portanto, se a tabela changelog (é assim que eu chamo) está rastreando duas tabelas em seu banco de dados (Produto, Usuário), ela ficará assim.
+Table Name + ChangeNumber +
| Product   | 1            |
+-----------+--------------+
| User      | 1            |
+-----------+--------------+

Agora, se você modificar qualquer coisa em qualquer uma dessas tabelas, o gatilho incrementará ChangeNumber e agora sabemos que eles mudaram.

Obviamente, há mais para isso, mas esta é a ideia geral.

Nota:Deve-se notar que você pode invalidar uma página se uma ou mais tabelas forem alteradas, portanto, se sua página tiver uma configuração de dependência para ambas as tabelas, se uma delas for alterada, ela invalidará a página em cache e fará o cache novamente versão.