【问题标题】:Why can't bcp execute procedures having temp table(#tempTable)?为什么 bcp 不能执行具有临时表 (#tempTable) 的程序?
【发布时间】:2014-08-09 06:12:47
【问题描述】:

最近我的任务是创建一个 SQL Server 作业来自动创建 CSV 文件。现有的代码使用了各种#temp 表。

当我使用 BCP 调用现有代码(转换为过程)设置作业以执行时,我不断收到错误:

SQLState = S0002, NativeError = 208
Error = [Microsoft][SQL Native Client][SQL Server]Invalid object name #xyz

如其他帖子中所述,为解决此问题,许多人建议将所有 #tempTables 转换为 @tableVariables。

但是,我想了解为什么 BCP 似乎无法使用 #tempTables? 当我从 SSMS 中执行相同的程序时,它仍然可以工作!?为什么?

我确实在一个过程中使用全局临时表进行了快速简单的测试,并且似乎通过使用 BCP 的工作成功了,所以我假设它与 #tempTables 的范围有关!?

提前感谢您的回复/澄清。

DTML

【问题讨论】:

    标签: stored-procedures bcp sql-server-2008 sql-agent-job


    【解决方案1】:

    您猜对了这是#temp 表的范围问题。

    BCP 是作为一个单独的进程生成的,因此这些表不再在新进程的范围内。 SSMS 可能使用子流程,因此它们仍然可以访问 #temp 表。

    【讨论】:

      猜你喜欢
      • 2014-10-04
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      相关资源
      最近更新 更多