【问题标题】:TableAdapter Configuration Wizard doesn't like temp tables in SPTableAdapter 配置向导不喜欢 SP 中的临时表
【发布时间】:2013-06-26 11:22:06
【问题描述】:

我有一个存储过程,我在数据集中使用它在 ReportViewer 中生成报告。

此 SP 使用临时表来存储中间值,以便在 SP 结束时在计算中使用这些值。

临时表都在 SP 结束时被完全删除。

我可以毫无问题地在 SSMS 中执行 SP,它会返回我期望的数据。

但是,当使用 TableAdapter 配置向导在 VS2012 中更新我的 xsd 时,它给了我错误 Invalid object name '#Held'(其中 #Held 是其中一个临时表的名称)。

发生了什么事?

【问题讨论】:

标签: .net sql-server tsql stored-procedures


【解决方案1】:

here 的答案完美无缺,原因不明。

只需将以下代码放在 SP 的 AS 部分之后的存储过程之后即可。

IF 1=0 BEGIN
    SET FMTONLY OFF
END

【讨论】:

  • 工作就像一个魅力。 FMTONLY 仅将元数据返回给客户端。可用于测试响应的格式,而无需实际运行查询。
  • 你现在是我的英雄蝙蝠。在过去的 2 个小时里,我一直在努力思考为什么 SP 中的临时表会导致 TableAdapter 配置向导失败。
  • 多年后你今天拯救了某人的一天,知道这一点。 :)
【解决方案2】:

#temp 表和表适配器存在一些已知问题。

有些人通过显式选择列名来绕过它,例如:

SELECT column1, column2, ... from #temptable 而不是SELECT *(如果你这样做的话)

您也可以尝试使用table 变量而不是临时表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2017-02-08
    • 1970-01-01
    相关资源
    最近更新 更多