Cuando da el siguiente error:

Es porque se han puesto fotos que pesan más de 100KB, hay que reducir la calidad de las imágenes de la carta digital, la única manera de saber que productos son, es hablar con la persona que modificó la carta digital y que nos digan los últimos productos modificados.
Para buscar las fotos más grandes hay que ejecutar las siguientes consultas en el SQL:
Productos:
SELECT
DATALENGTH(i.[Content]) AS Bytes, -- Tamaño de la imagen en bytes
i.Id AS ImageId, -- Id de la imagen
p.Id AS ProductId, -- Id del producto
p.Name AS ProductName -- Nombre del producto
FROM dbo.[Image] i
INNER JOIN dbo.ProductDataSheet pds
ON pds.ImageId = i.Id
INNER JOIN dbo.Product p
ON p.Id = pds.ProductId
ORDER BY
DATALENGTH(i.[Content]) DESC,
p.Id;
-- Menús digitales con imagen y con al menos una categoría asignada
-- Compatibilidad: SQL Server 2014
SELECT
DATALENGTH(dm.HeaderImage) AS Bytes, -- Tamaño de la imagen
dm.Id AS MenuId, -- Id del menú
dm.Name AS MenuName -- Nombre del menú
FROM dbo.DigitalMenu dm
WHERE
dm.HeaderImage IS NOT NULL
AND EXISTS
(
SELECT 1
FROM dbo.DigitalMenuCategory dmc
WHERE dmc.DigitalMenuId = dm.Id
)
ORDER BY
DATALENGTH(dm.HeaderImage) DESC,
dm.Id;
-- Familias activas con imagen y con al menos un grupo TPV asociado
-- Compatibilidad: SQL Server 2014
;WITH ImagesSized AS
(
SELECT
i.Id,
DATALENGTH(i.[Content]) AS Bytes
FROM dbo.[Image] i
WHERE i.[Content] IS NOT NULL
)
SELECT
s.Bytes, -- Tamaño de la imagen
s.Id AS ImageId, -- Id de la imagen
f.Id AS FamilyId, -- Id de la familia
f.Name AS FamilyName -- Nombre de la familia
FROM ImagesSized s
INNER JOIN dbo.Family f
ON f.StyleImageId = s.Id
WHERE
f.DeletionDate IS NULL
AND EXISTS
(
SELECT 1
FROM dbo.FamilyPosGroups fpg
WHERE fpg.FamilyId = f.Id
)
ORDER BY
s.Bytes DESC,
f.Id;
-- Categorías activas con imagen y con al menos un grupo TPV asociado
-- Compatibilidad: SQL Server 2014
;WITH ImagesSized AS
(
SELECT
i.Id,
DATALENGTH(i.[Content]) AS Bytes
FROM dbo.[Image] i
WHERE i.[Content] IS NOT NULL
)
SELECT
s.Bytes, -- Tamaño de la imagen
s.Id AS ImageId, -- Id de la imagen
c.Id AS CategoryId, -- Id de la categoría
c.Name AS CategoryName -- Nombre de la categoría
FROM ImagesSized s
INNER JOIN dbo.Category c
ON c.StyleImageId = s.Id
WHERE
c.DeletionDate IS NULL
AND EXISTS
(
SELECT 1
FROM dbo.CategoryPosGroups cpg
WHERE cpg.CategoryId = c.Id
)
ORDER BY
s.Bytes DESC,
c.Id;
Un saludo.
PD: Posible todo en uno pero no me cuadra el resultado:
-- Familias + Categorías + Menús + Productos
-- Ordenado por tamaño de imagen
-- Compatibilidad: SQL Server 2014
;WITH ImagesSized AS
(
SELECT
i.Id,
DATALENGTH(i.[Content]) AS Bytes
FROM dbo.[Image] i
WHERE i.[Content] IS NOT NULL
)
-- FAMILIAS
SELECT
'Familia' AS ElementType, -- Tipo de elemento
s.Bytes AS Bytes, -- Tamaño de imagen
s.Id AS ImageId, -- Id de la imagen
f.Id AS ElementId, -- Id de la familia
f.Name AS ElementName -- Nombre de la familia
FROM ImagesSized s
INNER JOIN dbo.Family f
ON f.StyleImageId = s.Id
WHERE
f.DeletionDate IS NULL
AND EXISTS
(
SELECT 1
FROM dbo.FamilyPosGroups fpg
WHERE fpg.FamilyId = f.Id
)
UNION ALL
-- CATEGORÍAS
SELECT
'Categoría' AS ElementType, -- Tipo de elemento
s.Bytes AS Bytes, -- Tamaño de imagen
s.Id AS ImageId, -- Id de la imagen
c.Id AS ElementId, -- Id de la categoría
c.Name AS ElementName -- Nombre de la categoría
FROM ImagesSized s
INNER JOIN dbo.Category c
ON c.StyleImageId = s.Id
WHERE
c.DeletionDate IS NULL
AND EXISTS
(
SELECT 1
FROM dbo.CategoryPosGroups cpg
WHERE cpg.CategoryId = c.Id
)
UNION ALL
-- MENÚS
SELECT
'Menú' AS ElementType, -- Tipo de elemento
DATALENGTH(dm.HeaderImage) AS Bytes, -- Tamaño de imagen
NULL AS ImageId, -- No usa la tabla Image
dm.Id AS ElementId, -- Id del menú
dm.Name AS ElementName -- Nombre del menú
FROM dbo.DigitalMenu dm
WHERE
dm.HeaderImage IS NOT NULL
AND EXISTS
(
SELECT 1
FROM dbo.DigitalMenuCategory dmc
WHERE dmc.DigitalMenuId = dm.Id
)
UNION ALL
-- PRODUCTOS
SELECT
'Producto' AS ElementType, -- Tipo de elemento
s.Bytes AS Bytes, -- Tamaño de imagen
s.Id AS ImageId, -- Id de la imagen
p.Id AS ElementId, -- Id del producto
p.Name AS ElementName -- Nombre del producto
FROM ImagesSized s
INNER JOIN dbo.ProductDataSheet pds
ON pds.ImageId = s.Id
INNER JOIN dbo.Product p
ON p.Id = pds.ProductId
WHERE
p.DeletionDate IS NULL
AND
(
p.FamilyId IS NOT NULL
OR EXISTS
(
SELECT 1
FROM dbo.ProductCategory pc
WHERE pc.ProductId = p.Id
)
)
ORDER BY
Bytes DESC,
ElementType,
ElementId;
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo