Назад | Перейти на главную страницу

Как извлечь данные из поля FILESTREAM SQL Server 2008 без использования .NET

У меня есть база данных SQL Server 2008 со столбцом VARCHAR (MAX) FILESTREAM. Я могу загрузить в него запись, используя такой синтаксис:

`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;`

Это отлично загружает мой текстовый документ. Я хотел бы знать, как извлечь данные обратно на диск с помощью инструментов, поставляемых с SQL Server. Это может быть T-SQL, bcp и т. Д., Мне все равно, я просто хотел бы знать, как это сделать, не прибегая к написанию приложения .NET.

Я экспериментировал с bcp, используя переключатели -c, -n, -N и -w, и он извлечет документ, но он неправильно отформатирован. Когда я открываю его в Word, вначале появляется много бинарной тарабарщины, а пока есть текст, все форматирование пропадает.

Спасибо!

Мне немного неловко признавать это, учитывая, что я написал технический документ FILESTREAM для Microsoft, но я не знаю ответа. Я чувствую то же самое, что и UndertheFold - вы не можете этого сделать. Я хотел понять, смогу ли я найти способ сделать это с помощью SSIS, но не смог.

Отличный вопрос - в основном вы не можете - вы можете выбрать путь и получить доступ к файлу прямо из файловой системы

Но от Книги онлайн вы заметите, что операции

  • вставить
  • Обновить
  • запрос
  • резервное копирование

FILESTREAM интегрирует ядро ​​СУБД SQL Server с файловой системой NTFS, сохраняя данные больших двоичных объектов (BLOB) varbinary (max) в виде файлов в файловой системе. Инструкции Transact-SQL могут вставлять, обновлять, запрашивать, искать и создавать резервные копии данных FILESTREAM. Интерфейсы файловой системы Win32 обеспечивают потоковый доступ к данным.

Как заявляет UndertheFold, вы не можете.

Однако важно понимать, что переименование или удаление файлов непосредственно в файловой системе приведет к повреждению вашей базы данных (Источник). Я не уверен насчет редактирования файлов, но лично я бы не стал рисковать.

Вы пробовали использовать задачу «Экспорт столбца» в SSIS?

См. Подробный пример здесь

Документация MS по столбцу экспорта

Здесь есть решение, которое должно сработать. Сам не тестировал, но выглядит нормально.

http://www.connectsql.com/2010/12/ssis-filestream-data-export-and-import.html