1
我想將數據更改記錄到sql更新觸發器中的redis數據庫,通過c#dll調用。 但我不想讓任何延遲觸發器。就好像日誌記錄redis操作是異步的。SQL Server在線程中觸發並運行CLR方法
有沒有辦法做到這一點?
我想將數據更改記錄到sql更新觸發器中的redis數據庫,通過c#dll調用。 但我不想讓任何延遲觸發器。就好像日誌記錄redis操作是異步的。SQL Server在線程中觸發並運行CLR方法
有沒有辦法做到這一點?
試試這個,它使用PubSub的,但這個概念幾乎是相同的:
亮點的情況下,鏈接雲:
[SqlProcedure]
public static void Publish(SqlString redisServerAddress, SqlInt32 redisServerPort, SqlString channel, SqlString message)
{
using (RedisConnection rc = GetRedisConnection(redisServerAddress.Value, redisServerPort.Value))
{
rc.Publish(channel.Value, message.Value);
}
}
CREATE PROCEDURE Redis.Publish(@RedisServerAddress NVARCHAR(1024), @RedisServerPort INT, @Channel NVARCHAR(1024), @Message NVARCHAR(MAX))
AS EXTERNAL NAME [MindFlavor.RESP.SQLCLR]. [MindFlavor.RESP.SQLCLR.Redis].Publish;
GO
EXEC [MindFlavor].[Redis].[Publish] N'ubuntu-spare.pelucchi.local', 6379, N'msbackup:sql', @txt;
要留意的是,在一些環境(例如Azure),則需要將您的clr標記爲safe
,如果您的dll或依賴關係破壞了實踐,則會引發一些問題。
使用SQL Server提供的用於解耦的工具(如服務代理),而不是嘗試執行線程工作。 –