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

如何通过T-SQL或PowerShell从带FileStream的SQL Server取回视频文件

从SQL Server FileStream中取回视频文件(无需C#)

你可以通过T-SQL结合bcp命令或者PowerShell脚本直接取回视频文件,无需编写C#代码,具体方法如下:

方法一:T-SQL + bcp命令

bcp是SQL Server自带的命令行工具,可用于导出二进制数据。

  1. 先启用xp_cmdshell(若未启用):
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
  1. 执行导出命令(替换占位符为你的实际信息):
EXEC xp_cmdshell 'bcp "SELECT files FROM vid_index.dbo.vids WHERE id = 1" queryout "E:\recovered_video.mp4" -S YOUR_SERVER_INSTANCE -T -n'
  • -S:指定SQL Server实例名称(例如localhost或.\SQLEXPRESS)
  • -T:使用Windows身份验证;如果是SQL身份验证,改用-U username -P password
  • -n:以原生格式导出,保证二进制数据完整无损坏

方法二:PowerShell脚本

PowerShell无需启用xp_cmdshell,操作更灵活:

# 配置参数
$serverName = "YOUR_SERVER_INSTANCE"
$dbName = "vid_index"
$outputPath = "E:\recovered_video.mp4"
$recordId = 1

# 连接数据库并读取二进制数据
$connString = "Server=$serverName;Database=$dbName;Integrated Security=True;"
$conn = New-Object System.Data.SqlClient.SqlConnection($connString)
$conn.Open()

$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT files FROM dbo.vids WHERE id = $recordId", $conn)
$reader = $cmd.ExecuteReader()

if ($reader.Read()) {
    [System.IO.File]::WriteAllBytes($outputPath, $reader["files"])
    Write-Host "视频文件已成功导出到 $outputPath"
}

# 清理资源
$reader.Close()
$conn.Close()

运行脚本前,替换$serverName、$outputPath和$recordId为你的实际值即可。

补充说明

你用SELECT * FROM vids看到的十六进制字符串是SQL Server对varbinary(max)类型的默认显示格式,并不代表数据损坏,实际存储的是完整的视频二进制内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:37