injecter l'image de db dans la requête de rapport sql

Si je crée une requête de rapport simple contre mssql db

if not exists(select * from DeliveryTemplate where TemplateId=2) begin select u.usersCode, 1,2,'User {UsersCode}',' hello {Username},', null, dt.DeliveryCode from User u left join DeliveryTemplate dt on u.Id = dt.UserId end 

comment étendre cette requête afin d'insert une image de la database où cette image est représentée comme byte [] dans DeliveryTemplate

 public class DeliveryTemplate{ ... public virtual byte[] MyImage { get; set; } } 

Juste pour clarifier je sais transformer octet [] en Image mais je ne sais pas comment injecter l'image dans la requête ci-dessus.

Le travail T-SQL suivant pour moi:

 UPDATE DeliveryTemplate SET MyImage = (SELECT * FROM OPENROWSET (BULK N'C:\Images\Image.jpg', SINGLE_BLOB) rs) WHERE UserId = identity_value 

Modifier: créez le champ d'image comme suit:

 ALTER TABLE DeliveryTemplate ADD MyImage VARBINARY(MAX) NULL 

Notez que vous devez stocker l'image dans un dossier auquel SQL Server a des droits d'access. Si c'est un dossier personnalisé (comme ci-dessus), vous devrez donner des persmissions à SQL Server pour cela (je pense que c'est l'user MSSQL $ MSSQLSERVER2012 en fonction de votre version SQL).

Vous pouvez vérifier cela en vérifiant les permissions sur le dossier de données SQL ou partout où le file MDF de votre database est stocké (dans SSMS, cliquez avec le button droit sur Base de données> properties> Fichiers). Sur ma machine, les bases de données sont stockées dans C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER2012\MSSQL\DATA .

Bien sûr, vous ne voulez pas trop vous tromper dans ce dossier vu que vos bases de données y sont stockées. Mais vous pouvez l'utiliser pour tester le code SQL ci-dessus et get une image dans la database. En aucun cas vous voulez supprimer l'un des files MDF ou LDF là !!! (Suppression d'un file MDF est un "CV événement de génération" pour citer Christopher Harrison de l'excellente MS Virtual Academy Vidéos)