Question : visualiser mes fichiers stockés en blob
Par Arian Papillon le vendredi 16 septembre 2022, 11:54 - Lien permanent
Question : je voudrais visualiser facilement mes fichiers PDF qui sont stockés dans ma base dans une colonne varbinary, comment faire ?
Réponse : à mon avis, c'est une fonctionnalité manquante à SSMS, ce serait bien d'avoir un viewer intégré. A suggérer à Microsoft !
Il existe des addins (payants) à SSMS, je pense par exemple à Devart SQL Complete. Sinon, il reste la solution de copier le document via un filetable comme le montre l'exemple ci-après...
Petit exemple de code pour créer son filetable :
CREATE DATABASE FileTableDB;
GO
/* configuration du serveur nécessaire pour filetable
select * from sys.configurations WHERE name LIKE 'filestream%'
EXEC sp_configure filestream_access_level,2
RECONFIGURE WITH OVERRIDE
*/
-- le stockage du filetable
ALTER DATABASE FileTableDB
ADD FILEGROUP FG_FT CONTAINS FILESTREAM;
GO
ALTER DATABASE FileTableDB
ADD FILE ( NAME = N'F_FS',
FILENAME = N'E:\Temp\FileTableFS' )
TO FILEGROUP FG_FT;
GO
ALTER DATABASE FileTableDB
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL
, DIRECTORY_NAME = N'FT_DATA' );
GO
USE FileTableDB
GO
-- la table/filetable
CREATE TABLE T_FICHIER
AS FILETABLE
WITH ( FILETABLE_DIRECTORY = 'FICHIERS',
FILETABLE_COLLATE_FILENAME = French_CI_AS);
GO
-- une table source exemple avec un lob
CREATE TABLE THEBLOB
(ID INT IDENTITY,
LOB VARBINARY(MAX))
GO
INSERT THEBLOB (LOB) VALUES (CAST('ABCDE' AS VARBINARY(MAX)))
GO
-- Pour récupérer son fichier, on copie vers la table/filetable
INSERT T_FICHIER (file_stream, name) SELECT TOP 1 LOB,'Myfile.txt' FROM THEBLOB
-- et on n'a plus qu'à récupèrer le fichier à travers le partage du filetable !