程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过存储过程从SQL导出二进制文件数据(图像)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过存储过程从SQL导出二进制文件数据(图像)?

开发过程中遇到通过存储过程从SQL导出二进制文件数据(图像)的问题如何解决?下面主要结合日常开发的经验,给出你关于通过存储过程从SQL导出二进制文件数据(图像)的解决方法建议,希望对你解决通过存储过程从SQL导出二进制文件数据(图像)有所启发或帮助;

好吧,首先..(对此感到抱歉;))不要使用游标..并为帽子感到抱歉…

关于游标最糟糕的事情之一是它们可以锁定您的表。我总是为了这些目的而做的(这是相当快的),我使用了for循环。

declare @totrow int
      , @currow int
      , @result int
      , @nsql nvarchar(maX)

declare @sqlStatements table (
  ID int identity(1, 1)
, sqlStatement varchar(maX)
)
insert 
into    @sqlStatements
SELEct  'query PART'
from    table

set @totrow = @@rowcount
set @currow = 1
while @totrow > 0 and @currow <= @totrow
begin
  SELEct @nsql = sqlStatement
  from   @sqlStatements
  where  ID = @currow

  exec @result = xp_cmdsHell @nsql

  set @currow = @currow + 1
end

在下一部分中,sql Server进程是否具有足够的权限写入c:驱动器?另外,在执行代码时查看消息窗格,也许您可​​以在其中找到一些东西?

您还可以执行尝试手动执行的操作。只需获取一个BCP语句并使用Xp_cmdsHell执行即可。它会给出任何错误吗?

解决方法

我正在尝试导出相当大量的图像文件,这些文件以二进制数据的形式内部存储在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调用有问题,但是我不确定接下来要尝试什么。

任何帮助或建议都将非常欢迎。

大佬总结

以上是大佬教程为你收集整理的通过存储过程从SQL导出二进制文件数据(图像)全部内容,希望文章能够帮你解决通过存储过程从SQL导出二进制文件数据(图像)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。