我正在尝试导出大量图像文件,这些文件作为二进制数据在内部存储在 SQL 数据库中。
作为在 SQL 中编写存储过程的新手,我遇到了一些关于如何归档的非常有用的指南,但我似乎遗漏了一些东西。
我在本地运行 SQL Server 2008 R2,并尝试将文件写入 C:\ 驱动器上的文件夹。
这是我到目前为止所拥有的业务部分:
BEGIN
DECLARE @cmd VARCHAR(8000)
DECLARE @result int
DECLARE curExportBinaryDocs CURSOR FAST_FORWARD FOR
SELECT 'BCP "SELECT Photograph_Data FROM [ALBSCH Trial].[dbo].[Photograph] WHERE Photograph_ID = '
+ CAST(Photograph_ID AS VARCHAR(500)) + '" queryout "' + @OutputFilePath
+ CAST(Photograph_ID AS VARCHAR(500)) + '.jpg"' + ' -n -T'
FROM dbo.Photograph
OPEN curExportBinaryDocs
FETCH NEXT FROM curExportBinaryDocs INTO @cmd
WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @cmd
EXEC @result = xp_cmdshell @cmd
FETCH NEXT FROM curExportBinaryDocs INTO @cmd
END
CLOSE curExportBinaryDocs
DEALLOCATE curExportBinaryDocs
END
在 xp_cmdshell 调用之后,'@result' 始终设置为 '1'(失败)。所有表名/字段都是正确的,所以我怀疑我的 BCP 调用有问题,但我不确定接下来要尝试什么。
非常欢迎任何帮助或建议。