Procedimentos CLR no SQL Server com Cache
As dependências do banco de dados que usam notificações do SQL Server podem reduzir o desempenho do aplicativo, pois o SQL Server lança notificações separadas para cada atualização de dados. Se houver muitas alterações no banco de dados, essas notificações poderão sobrecarregar o tráfego da rede, reduzindo o desempenho de ambos. NCache e aplicativos de usuário.
NCache permite que você escreva procedimentos armazenados CLR para o banco de dados para sincronizar o cache com o banco de dados. Os procedimentos CLR não envolvem a criação de estruturas de dados de dependência como SqlCacheDependency. Além disso, não há monitoramento de banco de dados ou mecanismo de notificação.
Por que usar procedimentos CLR no SQL Server com cache
Você pode usar procedimentos CLR, pois eles fornecem melhores resultados ao executar lógica complexa. Os procedimentos CLR garantem segurança de tipo e gerenciamento de memória. Além disso, grandes conjuntos de dados podem ser gerenciados facilmente usando procedimentos CLR, pois fornecem melhor gerenciamento de código.
Para usar os procedimentos armazenados do CLR para NCache, siga as etapas especificadas abaixo.
Para obter detalhes completos sobre a configuração do ambiente, consulte Configurar o SQL Server para procedimentos CLR.
Pré-requisitos
- Para aprender sobre os pré-requisitos padrão necessários para trabalhar com todos os NCache recursos do lado do cliente, consulte a página fornecida em Pré-requisitos da API do lado do cliente.
- Ambiente de Configuração para usar procedimentos CLR.
- A .NET Framework deve ser 4.8.
- O Microsoft SQL Server deve ser SQL Server 2008 ou superior.
- Para detalhes da API, consulte: ICache, CacheManager, dispor, Eliminar.
Note
Recomenda-se usar o CLRStoredProcedure.NCache
Pacote Nuget apenas para aplicativos de procedimento CLR e não para aplicativos de cache de dados de objeto.
Etapa 1: criar um novo aplicativo
Criar uma nova aplicação, StoredProcedure
, Utilizando Microsoft Visual Studio. A candidatura deve cumprir os seguintes critérios;
- deve ser um Biblioteca de classes.
- deve usar o .NET framework 4.8.
Etapa 2: adicionar um procedimento armazenado CLR
Adicione um procedimento armazenado CLR em seu aplicativo e implemente a lógica do aplicativo. Para obter mais detalhes, consulte a documentação da Microsoft em Procedimentos CLR.
A seguir está um exemplo do procedimento armazenado CLR, que remove um item do cache caso ele seja atualizado.
importante
Em caso NCache não está instalado na máquina em que você está usando procedimentos armazenados CLR, cliente.ncconf deve ser colocado no caminho C: \ Windows \ System32. Caso contrário, as operações no cache não ocorrerão.
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void RemoveOnUpdate(string cacheName, string key)
{
// Connect to the cache
ICache cache = CacheManager.GetCache(cacheName);
// Remove specified item
cache.Remove(key);
// Dispose the cache
cache.Dispose();
}
}
Note
Para garantir que a operação seja à prova de falhas, é recomendável lidar com possíveis exceções em seu aplicativo, conforme explicado em Como lidar com falhas.
Note
Tente escrever a lógica de sincronização que executa operações em massa.
Etapa 3: executar o procedimento armazenado CLR
Construir projeto
StoredProcudure
para gerarStoredProcudure.dll
.Agora execute o seguinte comando no SQL Server para implantar a dll.
Note
Modifique o caminho nesta consulta de acordo com o caminho do seu aplicativo.
CREATE ASSEMBLY [NCacheCLRStoredProcedures] FROM N'C:\Users\john_doe\source\repos\StoredProcedure\bin\Debug\StoredProcedure.dll' WITH PERMISSION_SET=UNSAFE
- Habilite a integração do CLR com o SQL Server usando o seguinte comando:
sp_configure 'clr enabled', 1
- Crie um procedimento armazenado no SQL Server usando o seguinte comando:
CREATE PROCEDURE RemoveOnUpdate
@cacheName AS nvarchar(4000),
@key AS nvarchar(4000)
AS
EXTERNAL NAME NCacheCLRStoredProcedures.StoredProcedures.RemoveOnUpdate
- Execute o procedimento armazenado CLR usando o seguinte comando:
Note
Certifique-se de que o cache especificado nesta etapa existe em cliente.ncconf.
EXEC RemoveOnUpdate “demoCache”, “key:123”
Veja também
.INTERNET: Alachisoft.NCache.Runtime.Dependências espaço para nome.