Попробуйте это, он использует PubSub но концепция в значительной степени то же самое:
http://blogs.msdn.com/b/frcogno/archive/2014/11/14/microsoft-sql-server-meets-redis-an-elegant-logging-platform-at-your-doorstep.aspx
Основные моменты в случае, если ссылка идет:
[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 или зависимости перейдут на clr safe
.
Используйте инструменты, которые SQL Server предоставляет для развязки (например, служебный брокер), а не пытается выполнять работу с потоками. –