ARMAZENAR ANEXOS .DOC,.XLS,,PDF, JPG

ICHIHARA 06/09/2016 13:46:11
#466592
Boa Tarde!

Alguém já trabalhou com armazenamento de documentos de diversos formatos( .doc,.xls,,pdf, jpg) em SQL Server 2008?
Recomendam? Ou possuem algo que preciso ficar atento que possa inviabilizar esta idéia.

Obrigado!
DS2T 06/09/2016 17:48:47
#466600
Quando o arquivo for muito grande, eu não recomendo guardar direto no SQL Server... O melhor é criar um repositório, copiar o arquivo para lá e gravar somente o caminho.
Primeiro, porque o banco de dados fica bem mais leve.
Segundo, porque na hora de recuperar as informações do banco de dados, você vai ter que jogar o arquivo para a memória todo de uma vez ou fazer várias consultas parciais até recuperar o arquivo por completo...
Por isso, acredito que o melhor é não abusar dos campos varbinary...

Inclusive, estou tendo que modificar um sistema... porque não estava prevendo que o usuário colocaria informações muito pesadas no banco de dados... e o cara tá colocando arquivos gigantes no banco de dados. Resumindo: Além da demora pra transferir o arquivo pela rede... ainda tenho a dificuldade de arregaçar a memória do computador... Foda...
ICHIHARA 08/09/2016 08:54:28
#466624
Bom dia DS2T,

Obrigado pela resposta.
No meu caso os arquivos não são grandes, raramente chegarão a 5mb.
Onde trabalho, existem vários departamentos e cada um com seu acesso a diretórios na rede. Criar um repositório para ser compartilhado para todos terem
acesso vai ser bem burocrático. Sem contar o risco que vou ter, caso alguém descubra o diretório do repositório e alterar os arquivos ou excluir.

A quantidade de arquivos por dia neste sistema não deve passar de 10 se tiver.
Os arquivos armazenados, não vão ser consultados com frequência.

Com estes detalhes vc prefere os repositório na rede? Ou da para a gente encarar armazenar no SQL?
DS2T 08/09/2016 19:33:19
#466649
Se vai ser burocrático e os arquivos são pequenos, acredito que não haverá problema em armazenar no banco de dados (que aparentemente, vai ser dedicado para isso. Correto?)

O processo é simples.
Ler o arquivo, armazenar num array de bytes... e enviar para o seu banco de dados, num campo varbinary.

Qualquer dúvida, fico a disposição.
FILMAN 08/09/2016 23:49:55
#466653
Bom o que você precisa saber já foi dito aqui, porém venho deixar uma situação mais clara!

Se os arquivos serão leves de até 5mb então tranquilo armazenar no banco, porém pense na modelação das tabelas!
Crie tabelas separadas para arquivos, pois dessa forma por mais que você tenha que fazer um SELECT a parte é melhor!

Só aconselho gravação no banco quando os arquivos não chegarem realmente a 3mb, portanto pense em compactar antes ai vai ser melhor ainda!

Quando ao gravar arquivos em repositórios não precisa ser uma pasta compartilhada para todo mundo ver!
Pense assim:
Servidor Banco de Dados
Pasta compartilhada oculta
Caminho gravado no banco invisível para o usuário
O usuário só sabe que anexou um arquivo
não sabe onde, não sabe como

Então o seu sistema internamente cria pastas do departamento dentro dessa pasta compartilhada no servidor de banco.
Creio que seria melhor do que gravar dentro do banco os arquivos, pense nisso!

Espero ter ajudado.
Tópico encerrado , respostas não são mais permitidas