带有缓存的 SQL Server 中的 CLR 过程
使用 SQL Server 通知的数据库依赖关系可能会降低应用程序的性能,因为 SQL Server 会为每个数据更新发出单独的通知。 如果数据库中有太多更改,这些通知可能会淹没网络流量,从而降低两者的性能 NCache 和用户应用程序。
NCache 允许您为数据库编写CLR存储过程,以将缓存与数据库同步。 CLR 过程不涉及创建依赖数据结构,例如 SqlCacheDependency。 此外,没有数据库监控或通知机制。
为什么在带有缓存的 SQL Server 中使用 CLR 过程
您可以使用 CLR 过程,因为它们在执行复杂逻辑时可以提供更好的结果。 CLR 过程确保类型安全和内存管理。 此外,可以使用 CLR 过程轻松管理大型数据集,因为它们提供更好的代码管理。
使用 CLR 存储过程 NCache,请按照以下指定的步骤操作。
要获取有关设置环境的完整详细信息,请参阅 为 CLR 过程设置 SQL Server.
先决条件
备注
建议使用 CLRStoredProcedure.NCache
Nuget 包仅适用于 CLR 过程应用程序,不适用于对象数据缓存应用程序。
第 1 步:创建新应用程序
创建一个新的应用程序, StoredProcedure
使用 Microsoft Visual Studio. 申请应符合以下标准;
- 它一定是 类库.
- 它必须使用 .NET framework 4.8.
步骤 2:添加 CLR 存储过程
在您的应用程序中添加 CLR 存储过程并实现您的应用程序逻辑。 有关更多详细信息,请参阅 Microsoft 文档 CLR 程序.
以下是 CLR 存储过程的示例,该过程会在更新时从缓存中删除项目。
重要
如果 NCache 没有安装在您使用 CLR 存储过程的机器上, 客户端.ncconf 必须放在路径上 C:\ WINDOWS \ System32。 否则,不会发生对缓存的操作。
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();
}
}
备注
为确保操作是故障安全的,建议处理应用程序中的任何潜在异常,如中所述 处理故障.
备注
尝试编写批量执行操作的同步逻辑。
步骤 3:执行 CLR 存储过程
构建项目
StoredProcudure
生成StoredProcudure.dll
.现在在 SQL Server 中运行以下命令来部署 dll。
备注
根据您的应用程序的路径修改此查询中的路径。
CREATE ASSEMBLY [NCacheCLRStoredProcedures] FROM N'C:\Users\john_doe\source\repos\StoredProcedure\bin\Debug\StoredProcedure.dll' WITH PERMISSION_SET=UNSAFE
- 使用以下命令启用 CLR 与 SQL Server 的集成:
sp_configure 'clr enabled', 1
- 使用以下命令在 SQL Server 中创建存储过程:
CREATE PROCEDURE RemoveOnUpdate
@cacheName AS nvarchar(4000),
@key AS nvarchar(4000)
AS
EXTERNAL NAME NCacheCLRStoredProcedures.StoredProcedures.RemoveOnUpdate
- 使用以下命令执行 CLR 存储过程:
备注
确保此步骤中指定的缓存存在于 客户端.ncconf.
EXEC RemoveOnUpdate “demoCache”, “key:123”
参见
.NET: Alachisoft.NCache.运行时.依赖项 命名空间。