我创建了一个包含7个临时表的存储过程,每个临时表在自己的工作结束时被删除 .
我从一个Web服务和相同的Web服务调用SP,我们用于不同的实例 .
我强行删除了每个临时表,但是当SP执行时,它不会删除位于“tempdb / Temporary Table”中的任何临时表 . 而且,当我打开我的应用程序的新实例并尝试执行相同的SP时,它将修改相同的临时表 .
这给我带来了麻烦 . 当SP同时执行时它将锁定表,它将锁定表,我的sp无法产生结果并抛出异常 .
所以我想在操作结束时删除临时表 . 请帮忙 .
4 回答
我不能告诉你为什么会这样,但我之前也已经处理过了 . 尝试在SP的开头或结尾清理表或使用表变量 .
如果您使用了许多Temp表并且在您的sp之间存在一些错误并且您的drop语句无法执行,则可能发生这种情况 .
所以它总是最好的做法
在SP的开始 .
要强制删除临时表使用
丑陋但有效 . 为每个临时表使用单独的TRY .
我认为这不会起作用,因为我们知道sql server store临时表名称添加了一些额外的字符 . if exists(从tempdb.sys.tables中选择1,其中名称如'#TableName%')DROP TABLE #TableName