Procedure CLR in SQL Server con cache
Le dipendenze del database che utilizzano le notifiche del server SQL possono ridurre le prestazioni dell'applicazione, poiché il server SQL invia notifiche separate per ogni aggiornamento dei dati. Se vengono apportate troppe modifiche al database, queste notifiche potrebbero sovraccaricare il traffico di rete, riducendo le prestazioni di entrambi NCache e applicazioni utente.
NCache consente di scrivere procedure memorizzate CLR per il database per sincronizzare la cache con il database. Le procedure CLR non comportano la creazione di strutture di dati di dipendenza come SqlCacheDependency. Inoltre, nessun monitoraggio del database o meccanismo di notifica.
Perché utilizzare le procedure CLR in SQL Server con cache
È possibile utilizzare le procedure CLR poiché forniscono risultati migliori durante l'esecuzione di logiche complesse. Le procedure CLR garantiscono l'indipendenza dai tipi e la gestione della memoria. Inoltre, set di dati di grandi dimensioni possono essere gestiti facilmente utilizzando le procedure CLR poiché forniscono una migliore gestione del codice.
Per utilizzare le procedure memorizzate CLR per NCache, segui i passaggi specificati di seguito.
Per ottenere dettagli completi sulla configurazione dell'ambiente, fare riferimento a Configura SQL Server per le procedure CLR.
Prerequisiti
- Per conoscere i prerequisiti standard richiesti per lavorare con all NCache funzionalità lato client, fare riferimento alla pagina specificata Prerequisiti dell'API lato client.
- Ambiente di installazione per l'utilizzo delle procedure CLR.
- Il .NET Framework deve essere 4.8.
- Microsoft SQL Server deve essere SQL Server 2008 o versioni successive.
- Per i dettagli dell'API fare riferimento a: ICache, Gestore cache, lineamenti, Rimuovere.
Note:
Si consiglia di utilizzare il file CLRStoredProcedure.NCache
Pacchetto Nuget solo per applicazioni di procedure CLR e non per applicazioni di memorizzazione nella cache dei dati degli oggetti.
Passaggio 1: crea una nuova applicazione
Crea una nuova applicazione, StoredProcedure
, utilizzando Microsoft Visual Studio. L'applicazione deve soddisfare i seguenti criteri;
- deve essere un Libreria di classi.
- deve usare il .NET framework 4.8.
Passaggio 2: aggiungere una stored procedure CLR
Aggiungi una procedura memorizzata CLR nella tua applicazione e implementa la logica dell'applicazione. Per ulteriori dettagli fare riferimento alla documentazione Microsoft su Procedure CLR.
Di seguito è riportato un esempio della procedura memorizzata CLR, che rimuove un elemento dalla cache nel caso in cui venga aggiornato.
Consigli
Nel caso NCache non è installato sulla macchina in cui si utilizzano le procedure memorizzate CLR, client.ncconf deve essere posizionato sul percorso C: \ Windows \ System32. In caso contrario le operazioni sulla cache non avranno luogo.
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:
Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
Note:
Prova a scrivere la logica di sincronizzazione che esegue le operazioni in blocco.
Passaggio 3: eseguire la stored procedure CLR
Crea progetto
StoredProcudure
generareStoredProcudure.dll
.Ora esegui il comando seguente in SQL Server per distribuire la dll.
Note:
Modifica il percorso in questa query in base al percorso della tua applicazione.
CREATE ASSEMBLY [NCacheCLRStoredProcedures] FROM N'C:\Users\john_doe\source\repos\StoredProcedure\bin\Debug\StoredProcedure.dll' WITH PERMISSION_SET=UNSAFE
- Abilita l'integrazione CLR con SQL Server utilizzando il comando seguente:
sp_configure 'clr enabled', 1
- Creare una stored procedure in SQL Server utilizzando il comando seguente:
CREATE PROCEDURE RemoveOnUpdate
@cacheName AS nvarchar(4000),
@key AS nvarchar(4000)
AS
EXTERNAL NAME NCacheCLRStoredProcedures.StoredProcedures.RemoveOnUpdate
- Eseguire la stored procedure CLR utilizzando il comando seguente:
Note:
Assicurati che la cache specificata in questo passaggio esista client.ncconf.
EXEC RemoveOnUpdate “demoCache”, “key:123”
Vedere anche
.NETTO: Alachisoft.NCache.Dipendenze.di.runtime spazio dei nomi.