You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell从SQL Server提取文件出现0字节及GetBytes错误如何修复

错误原因
  • 错误提示已经明确说明问题:你对extension字段调用了GetBytes方法,这个字段是存储文件后缀名的字符串类型字段,本身不存储文件的二进制内容,所以读取失败,写出的文件自然是0字节。
  • 你的SQL查询仅返回了extension字段,没有返回存储文件内容的二进制字段,也是出错的核心原因。
修复步骤
  1. 先确认表[XXXXXXXX].[dbo].[XXXXXXdocuments]中存储文件二进制内容的字段名,常见命名为content、file_binary、document_content等,和FILESTREAM绑定的字段也会是二进制类型,你可以查表结构确认正确字段名。
  2. 修改SQL查询语句,同时查询后缀名字段和二进制内容字段,示例如下(将file_content替换为你实际的二进制字段名):
SELECT 
      [extension],
      [file_content]
  FROM [XXXXXXXX].[dbo].[XXXXXXdocuments]
  1. 调整PowerShell中的读取逻辑:
    • 原有读取后缀名作为文件名的逻辑rd.GetString(0)不用修改
    • 把所有调用GetBytes的行里的第一个参数从0改成1,也就是把
      $received = $rd.Getbytes(0, $start, $out, 0, $bufferSize - 1);
      
      修改为
      $received = $rd.Getbytes(1, $start, $out, 0, $bufferSize - 1);
      
  2. 删除代码中无用的enter code here占位行。
  3. 可选优化:建议查询时同时返回表的主键ID字段,将ID加入生成的文件名中,避免多个文件后缀相同时出现覆盖问题。

内容的提问来源于stack exchange,提问作者user17581125

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:06:06