sharepoint server 2007 中上传了很多文件,想批量从内容数据库中恢复文件,而不是从页面中逐一下载,经检查文件均存储在数据库的alldocstreams 表的content字段中,字段类型为image。
可以使用textcopy.exe将内容写入到文件中,此文件在sql server 2000中提供,sql server 2005 仍然可以使用。
以下sql语句的/D 数据库名 /U 用户名 /P 密码 /S 服务器地址 需要修改成自己数据库服务器的相应值,导出目录为C:\temp
SELECT ‘textcopy.exe /S LOCALHOST /D WSS_Content /T alldocstreams /C content /U sa /P password /F “c:\temp\’+replace(dirname,’/’,’\’)+’\’+leafname +'” /O /Z /W “where ID=”’+lower(CONVERT(varchar(40),id,40))+”’ and Level=”255”’ FROM [WSS_Content].[dbo].[AllDocs] where id in (select distinct id from alldocstreams);
将结果保存在批处理文件中执行即可。注意textcopy.exe 不会自己建目录,需要先执行以下语句建立目录
select distinct ‘md ‘+ ‘”‘+replace(dirname,’/’,’\’)+'”‘ from alldocs;