sql-server – 如何在不使用.NET的情况下从SQL Server 2008 FILESTREAM字段中提取数据

我有一个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;`

这加载我的word文档就好了.我想知道的是如何使用sql Server提供的工具将数据提取回磁盘.可能是T-sql,bcp等,真的不在乎我只是想知道一种方法来做到这一点,而不必诉诸于编写.NET应用程序.

我已经使用-c,-n,-N和-w开关对bcp进行了实验,它将提取文档,但格式不正确.当我在Word中打开它时,开头有很多二进制乱码,而文本在那里所有格式都消失了.

谢谢!

解决方法

很棒的问题 – 基本上你不能 – 你可以选择路径并直接从文件系统访问文件

但是从Books online开始你会注意到这些操作

>插入
>更新
>查询
>备份

FILESTREAM通过将varbinary(max)二进制大对象(BLOB)数据存储为文件系统上的文件,将sql Server数据库引擎与NTFS文件系统集成在一起. Transact-sql语句可以插入,更新,查询,搜索和备份FILESTREAM数据. Win32文件系统接口提供对数据的流式访问.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...