Como extrair dados de um campo FILESTREAM do SQL Server 2008 sem usar o .NET

3

Eu tenho um banco de dados do SQL Server 2008, com uma coluna VARCHAR (MAX) FILESTREAM. Eu posso carregar um registro usando esta sintaxe:

'INSERT INTO DocumentRepository(DocumentExtension, DocumentName, Document) 
 SELECT
 'doc' AS DocumentExtension
 , 'Hamlet.doc' AS DocumentName
 , * FROM OPENROWSET(BULK 'D:\Docs\Hamlet.doc', SINGLE_BLOB) 
   AS Document;'

Isso carrega meu documento do Word muito bem. O que eu gostaria de saber é como extrair os dados de volta para o disco usando as ferramentas fornecidas pelo SQL Server. Pode ser T-SQL, bcp, etc, realmente não me importo Eu só gostaria de saber uma maneira de fazer isso sem recorrer a ter que escrever um aplicativo .net.

Eu experimentei o bcp, usando as opções -c, -n, -N e -w e ele extrairá o documento, mas não está formatado corretamente. Quando eu abri-lo no Word há um monte de rabiscos binários no início, e enquanto o texto está lá toda a formatação se foi.

Obrigado!

    
por user2867 17.05.2009 / 23:54

5 respostas

2

Grande pergunta - Basicamente você não pode - você pode selecionar o caminho e acessar o arquivo diretamente do sistema de arquivos

Mas a partir de livros on-line , você notará que as operações são

  • insira
  • atualizar
  • consulta
  • back up

O FILESTREAM integra o Mecanismo de Banco de Dados do SQL Server a um sistema de arquivos NTFS, armazenando dados de objeto binário grande (BLOB) varbinary (max) como arquivos no sistema de arquivos. As instruções Transact-SQL podem inserir, atualizar, consultar, pesquisar e fazer backup de dados FILESTREAM. As interfaces do sistema de arquivos Win32 fornecem acesso de streaming aos dados.

    
por 18.05.2009 / 00:25
5

Eu me sinto um pouco envergonhada em admitir isso, já que eu escrevi o white paper da FILESTREAM para a Microsoft - mas eu não sei a resposta. Meu sentimento é o mesmo do UndertheFold - você não pode fazer isso. Eu tive uma surra para ver se conseguia encontrar alguma maneira de fazer isso com o SSIS, mas não consegui.

    
por 18.05.2009 / 01:04
0

Como afirma UndertheFold, você não pode.

No entanto, é importante perceber que renomear ou excluir arquivos diretamente no sistema de arquivos corromperá seu db ( Fonte ). Não tenho certeza sobre a edição dos arquivos, mas pessoalmente eu não arriscaria isso.

    
por 18.05.2009 / 03:30
0

Você tentou usar a tarefa "Exportar coluna" no SSIS?

Veja um exemplo detalhado aqui

Documentação MS na coluna Exportar

    
por 06.12.2016 / 14:05
-1

Existe uma solução aqui que deve funcionar. Não testei isso sozinho, mas parece válido.

link

    
por 07.03.2018 / 15:30