【问题标题】:Can I run multiple instances of the same stored procedure that includes temp tables in SQL Server我可以在 SQL Server 中运行包含临时表的同一存储过程的多个实例吗
【发布时间】:2021-02-11 15:08:44
【问题描述】:

我正在尝试通过 Python Pyodbc 执行 SQL Server 存储过程,并将选择结果打印到 .csv 文件中。但是这个过程目前正在其他日常任务中使用,所以我担心如果我在 python 中执行该过程会中断 SQL Server 代理中的每日计划作业进程。在该过程中,它创建了几个临时表#temp_a、#temp_b 和#temp_c。我想知道这些临时表是否会中断包含此过程的计划作业,因为可能有其他过程将使用相同的名称(例如 #temp_a 或 #temp_b)创建临时表名称。临时表是在过程中创建的,但没有写入删除查询。我本可以自己对此进行测试,但我现在正在处理的数据库非常脆弱,以至于我被告知不要创建测试。谢谢!

【问题讨论】:

  • 你能把标题改成问题吗?例如,“我可以在 SQL Server 中运行包含临时表的同一存储过程的多个实例吗?”这将更容易回答,也更容易被未来的人找到。
  • 是的,我刚刚改了

标签: sql sql-server database stored-procedures pyodbc


【解决方案1】:

是的


临时表将在每个会话中创建。 我让不同的会话在同一时间执行该过程,临时表的数量将与执行的会话相同。 这个临时表有不同的名称:

#V_...._000000003EB1

#V_...._000000003EB8

上面的例子是同一个Procedure创建的temp-Tables被不同的session同时执行了两次。

所以你的情况不可能发生

【讨论】:

  • 这是正确的答案。如果您想创建一个可以在会话之外访问的临时表,您可以使用两个哈希:##temp_a 而不是 #temp_a 虽然很明显,提问者想要仅会话的临时表 #temp_a。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 2014-01-07
  • 1970-01-01
  • 2021-07-22
相关资源
最近更新 更多