无效的对象名称

时间:2016-01-22 13:30:26

标签: sql sql-server-2012 invalid-object-name

我有一个表被删除并在几毫秒内重新创建(不能插入和删除)。当然,有时当另一个存储过程正在运行并尝试调用该表时会发生这种情况。我怎么能避免这个?我已经尝试了等待' xx秒和不同类型的循环要等到表回来,但我仍然得到错误说该表不存在或(无效的对象名称' xxxx')感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

删除并重新创建事务中的表。

当你从/向它读/写时,确保你的事务隔离级别是READ COMMITTED。

这样,表应该始终存在,因为在提交删除和创建表的事务之前,您的读/写不会发生。

我认为这是对的,所以我希望有所帮助。

enter link description here

答案 1 :(得分:0)

在尝试访问表之前,您需要检查表是否存在。 你可以这样做:

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'Schema' 
                 AND  TABLE_NAME = 'Table'))
BEGIN
    -- Do stuff with the table
END

另一种选择是通过将TRY / CATCH与动态SQL一起使用来处理模式错误,如下所示:

BEGIN TRY

DECLARE @sql nvarchar(100)

SET @sql = 'SELECT * FROM NonExistentTable'

EXEC sp_executesql @sql

END TRY

BEGIN CATCH

SELECT'Do stuff here'

END CATCH