Skocz do zawartości

Odnalezienie największych plików graficznych w bazie danych - polecenie SQL

Polecane posty

Witam,

 

Dobijamy z bazą do 10 GB - mamy w bazie 2257 zdjęć używanych na potrzeby list magazynowych sello oraz dla niestandardowego wzorca wydruku dla Gestor GT.  Zdjęcie do kartoteki towaru umieszczamy w rozdzielczości 800x600 i wadze nie wyższej jak 100KB - miejsce trzeba oszczędzać. Wszystkie zdjęcia nie powinny w bazie przekroczyć 200-250 MB - ale jak się okazało jeden z niepracujących już pracowników do towarów umieszczał zdjęcia nie patrząc na ich wagę i rozmiar.  Obecnie tablica dbo.im__Image zajmuje aż 3235896 KB (3,08 GB)

 

Jak poleceniem SQL przez  SQL Server Management Studio odnaleźć towary, w których są tak duże pliki graficzne ? Znam absolutne podstawy SQL - ale z tym nie mogę sobie poradzić :(/

 

 

Link to postu

Nie ma potrzeby korzystania SSMS, można przygotować dodatkowe zestawienie SQL i osadzić je w programie... Jest to proste zestawienie, które udostępniam za darmo:

select case when tw_Zablokowany = 1 then CAST(0 as bit) else CAST(1 as bit) end [Aktywny]
, tw_Symbol [Symbol]
, tw_Nazwa [Nazwa]
, cast(1 as money) [Ilość]
, cast(DATALENGTH(zd_zdjecie) as money) [Rozmiar w B]
, cast(DATALENGTH(zd_zdjecie) / 1024.0 as money) [Rozmiar w kB]
, cast(DATALENGTH(zd_zdjecie) / 1024.0 / 1024.0 as money) [Rozmiar w MB]
from tw__Towar
join tw_ZdjecieTw on tw_Id = zd_IdTowar
where DATALENGTH(zd_zdjecie) > {M: Zdjęcia większe niż (kB): 0} * 1024

 

  • Dziękuję 1
Link to postu
  • 1 miesiąc temu...

Gdyby jednak była potrzeba skorzystania z SSMS to przeróbka kodu Pana @Daniel Kozłowski na szybko : 

select tw_Symbol [Symbol]
, tw_Nazwa [Nazwa]
, DATALENGTH(zd_zdjecie) [Rozmiar w B]
, DATALENGTH(zd_zdjecie) / 1024.0  [Rozmiar w kB]
, DATALENGTH(zd_zdjecie) / 1024.0 / 1024.0 [Rozmiar w MB]
from tw__Towar
join tw_ZdjecieTw on tw_Id = zd_IdTowar
where DATALENGTH(zd_zdjecie) > 1024 * 100

 

Link to postu
×
×
  • Dodaj nową pozycję...