如何仅在 SQL Server 2008 存在时删除 table

How to drop a table in SQL Server 2008 only if exists

我们公司正在将其产品之一从 SQL Server 2005 迁移到 2008,并且在日志中我注意到有关删除 table 不存在的过多错误。在 SQL Server 2005 中,我们删除了 tables

IF OBJECT_ID('dbo.Units', 'U') IS NOT NULL
   DROP TABLE dbo.Units

这似乎不再有效了。

仅当 SQL Server 2008 中存在 table 时,删除它的正确方法是什么?

应该这样做!

IF EXISTS 
        (SELECT 
             TABLE_NAME 
         FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TableToDrop') 
DROP TABLE TableToDrop

此代码适用于我的 SQL Server 2012:

IF OBJECT_ID('t', 'U') IS NOT NULL DROP TABLE t
CREATE TABLE t(id int)

也许您的名字有误(例如,新安装的排序规则区分大小写?)。你得到什么样的错误? 请注意,在 SQL Server 2016 中,您可以使用 DROP IF EXISTS:

DROP TABLE IF EXISTS t
CREATE TABLE t(id int)