2010-03-30 6 views
4

Je me demande si certains peuvent m'aider avec ce petit problème. J'ai l'instruction d'insertion suivante:en vrac insérer l'image du chemin relatif

insert into symbol (sy_id, sy_fg_color, sy_bg_color, sy_icon) 
select 302, 0, 16245177, sy_icon = (select * from openrowset(bulk 'K:\mypath\icons\myicon.png', single_blob) as image) 

Est-il possible de rendre le chemin relatif de quelque façon que ce soit? J'utilise TFS pour déployer la base de données, donc s'il n'est pas possible de la rendre relative avec T-SQL, peut-être cela peut-il être fait avec un peu d'aide de TFS/Visual Studio déployer?

+0

Avez-vous jamais obtenir une solution pour cela? – Mike

+0

Non, je n'ai pas encore trouvé de solution. – Markus

+0

http://stackoverflow.com/questions/139245/relative-path-in-t-sql est exactement ce dont vous avez besoin. –

Répondre

0

Vous pouvez insérer dans un champ varbinary(max) en utilisant T-SQL en utilisant le OPENROWSET commmand.

INSERT dbo.tblPhotos 
(
    LargePhoto 
) 
SELECT tblPhotos.* 
FROM OPENROWSET 
    (BULK 'c:\images\image*.jpg', SINGLE_BLOB) ThumbnailPhoto 

Notez que le chemin du fichier dans ce cas est par rapport au serveur SQL ciblé et pas votre client exécutant cette commande.

Essentiellement, il y a deux façons de sélectionner un blob avec TSQL:

SELECT * FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 

ainsi que:

SELECT BulkColumn FROM OPENROWSET (BULK 'C:\Test\Test1.pdf', SINGLE_BLOB) a 

Vous pouvez ensuite utiliser ce INSERT en faisant un INSERT SELECT ... ou UPDATE SELECT ...

Voir plus here.