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

C#调用含用户自定义表类型的SQL Server存储过程报TDS协议错误

错误原因
  • 直接触发错误的原因是C#代码中为表值参数@Files指定的TypeName属性携带了数据库名前缀Inbox.。
  • SQL Server的表值参数(TVP)调用规范明确要求,用户自定义表类型的名称仅允许使用「架构名.类型名」的格式,不允许包含数据库名,否则会触发TDS RPC协议流校验失败。
  • 你代码中填写的TypeName = "Inbox.dbo.EngComputerFileTableType"包含了数据库名Inbox,不符合上述规范。
修复方法
  1. 首先确保你的数据库连接字符串的Initial Catalog配置为Inbox,即连接默认指向自定义表类型、存储过程所在的数据库。
  2. 修改C#代码中表值参数的TypeName属性,去掉数据库名前缀,修改后的代码如下:
SqlParameter tableTypeParam = new SqlParameter("@Files", SqlDbType.Structured)
                                  {
                                      TypeName = "dbo.EngComputerFileTableType",
                                      Value = dt
                                  };

补充说明:如果修改后仍有报错,请检查你定义的EngComputerFileTableType自定义表类型的列顺序、数据类型、非空约束,和C#代码中DataTable的列定义是否完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:57:00