Я не вижу здесь никакой пользы для этого в SQL Server через SQLCLR. Возможно, было бы полезно, если бы данные, поступающие в таблицу, поступали из разных внешних источников/приложений, которые не могли быть гарантированы при использовании подпрограммы генерации миниатюр. Но похоже, что данные поступают из одного источника, который вы контролируете. Таким образом, в этом случае, скорее всего, это будет вредно для производительности, чтобы сделать это в SQLCLR, а не обрабатывать его на уровне приложения (SQL Server является единственным источником для этой обработки, а серверы приложений можно масштабировать).
Кроме того, если вы можете использовать любую библиотеку, которая вам нравится в большинстве сред .NET (WebApp, Windows App, консольное приложение и т. Д.), Вы можете ограничить небольшую подмножество библиотек .NET Framework (Supported .NET Framework Libraries) среди других ограничений (CLR Integration Programming Model Restrictions и Host Protection Attributes and CLR Integration Programming). И это может получить очень сложно в зависимости от того, какие библиотеки используются для создания изображения: все, что требует пользовательский интерфейс для рисования, вероятно, не будет работать, поскольку пользовательский интерфейс недоступен в хосте CLR SQL Server.
Теперь может быть полезно хранить thumbnail image в SQL Server в столбце VARBINARY(MAX)
. Преимущество заключается в том, что эскиз будет скопирован вместе с данными, на которых он основан, и поэтому, если сервер сработает, вы вернете эскизы при восстановлении базы данных. Это также помогает гарантировать, что кто-то или какой-либо другой процесс не придет и не удалит один или несколько эскизов, что может произойти при хранении в файловой системе. И тогда вам также не нужно беспокоиться о очистке файловой системы, когда запись обновляется или удаляется. Конечно, это также зависит от того, сколько миниатюр вы ожидаете и насколько они будут большими. Я предполагаю, что они не слишком большие, как миниатюры.