📅  最后修改于: 2023-12-03 15:31:20.512000             🧑  作者: Mango
在日常开发中,我们经常需要将SQL Server中存储的文档导出成可读的文件。本文中我们介绍一种在SQL Server中将已保存为BLOB/Binary格式的文档导出成可读文件的方法。这个方法适用于Microsoft SQL Server 2005版本以及以上的版本。
创建一个储存过程
CREATE PROCEDURE ExportDocumentsASBlob
(
@DocID INT,
@FilePath VARCHAR(200)
)
AS
BEGIN
DECLARE @ObjectToken INT
EXEC sp_OACreate 'ADODB.Stream' , @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, (SELECT DocumentData FROM Document WHERE DocumentID = @DocID)
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @FilePath, 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
END
这个储存过程的目的是将储存在Document表中的文件导出。需要提供两个参数:@DocID
是您想要导出的文件的ID,@FilePath
是导出文件的路径。
运行储存过程导出文件
执行以下语句可以帮助导出指定ID的文档。
EXEC ExportDocumentsASBlob @DocID=1, @FilePath='C:\ExportedDocument.docx'
请注意以下事项:
该方法需要开启OLE Automation才能运行。您可以通过以下语句开启它:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
请确保您想导出的文件的文件类型是正确的,并且您在运行程序之前已安装有合适的程序来打开该文件类型。
如果在导出过程中出现错误,请检查您项目运行的权限以及相关的数据库配置。
通过这种方法,我们可以很容易地从SQL Server中导出已保存为BLOB/Binary格式的文档。如果您在使用中遇到问题,请随时联系我。祝您使用愉快!