O SQL Server permite, a partir da versão 2005, o carregamento de arquivos em tabelas com campos do tipo image ou VARBINARY(MAX).
O Bulk OLE DB provider é capaz de realizar esta tarefa, dispensando ferramentas de carga ou outros utilitários externos ao SQL Server. Para isso é necessário utilizá-lo juntamente com a função OPENROWSET().
Veja o exemplo abaixo:
Obs1: No exemplo, a imagem encontra-se diretamente na unidade E: da máquina onde o SQL Server está instalado.
Obs2: O campo tipoMIME foi adicionado para facilitar a identificação do tipo de arquivo caso uma aplicação precise acessá-lo.
1: CREATE TABLE Imagem
2: (
3: id INT IDENTITY PRIMARY KEY
4: , nome VARCHAR(100) NOT NULL
5: , tipoMIME VARCHAR(20) NOT NULL
6: , imagem VARBINARY(MAX)
7: )
8:
9: INSERT INTO Imagem VALUES ('Minha imagem','image/jpeg',
10: (SELECT * FROM OPENROWSET(BULK 'E:\Imagem.jpg', SINGLE_BLOB) AS A))
Obs1: No exemplo, a imagem encontra-se diretamente na unidade E: da máquina onde o SQL Server está instalado.
Obs2: O campo tipoMIME foi adicionado para facilitar a identificação do tipo de arquivo caso uma aplicação precise acessá-lo.
Em breve escreverei sobre como acessar o arquivo armazenado via aplicação Asp.Net.
Até a próxima!
4 comentários:
muito bom, e a aplicação Asp.net ja fez?
Obrigado, foi de grande ajuda para anexar meus arquivos em pdf, txt, doc, docx.
Amigo, estou tendo erro de acesso negado, você tem idéia do que pode ser?
Segue msg de erro: Cannot bulk load because the file "\\julian\C\teste\img.jpg" could not be opened. Operating system error code 5(Acesso negado.).
Obrigado,
Julian
Olá Julian!
Existem várias causas para este erro. Veja se este post do MSDN pode ajudar: http://blogs.msdn.com/b/jay_akhawri/archive/2009/02/16/resolving-operating-system-error-code-5-with-bulk-insert-a-different-perspective.aspx
Se não resolver, entre em contato novamente, para que possamos tentar uma outra abordagem.
Abs!!
Postar um comentário