[dba-SQLServer] If Exists puzzle

Asger Blond ab-mi at post3.tele.dk
Sun Jul 15 09:28:39 CDT 2012


The name column of sys.tables doesn't include the schema name, i.e. just
'MyTable' not 'dbo.MyTable'.
Asger
----- Original meddelelse -----

> Fra: Arthur Fuller <fuller.artful at gmail.com>
> Til: Discussion concerning MS SQL Server
> <dba-sqlserver at databaseadvisors.com>
> Dato: Søn, 15. jul 2012 15:54
> Emne: [dba-SQLServer] If Exists puzzle
> 
> I'm trying to check for the existence of a table, and if it does,
> drop it.
> I did a search and came up with some code like this:
> 
> <sql>
> IF EXISTS (SELECT 1 FROM sys.tables WHERE name = 'dbo.MyTable')
> PRINT 'TableName available.'
> ELSE
> PRINT 'TableName not available.'
> </sql>
> 
> This returns the message "Invalid object name: sys.tables
> 
> So then I reverted to the older syntax:
> 
> <sql>
> IF EXISTS(SELECT * FROM IDS.dbo.sysobjects WHERE ID =
> OBJECT_ID(N'[IDS]..[dbo.MyTable'))
> PRINT 'MyTable exists'
> ELSE
> PRINT 'MyTable does not exist'
> </sql>
> 
> This syntax works but the result is "dbo._Tble_852Import does not
> exist".
> Unfortunately, the table does exist. I'm in the right database when
> running
> the query, so that's not the problem
> 
> Any idea what I'm doing wrong?
> TIA,
> --
> Arthur
> Cell: 647.710.1314
> 
> Prediction is difficult, especially of the future.
> -- Niels Bohr
> _______________________________________________
> dba-SQLServer mailing list
> dba-SQLServer at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
> http://www.databaseadvisors.com



More information about the dba-SQLServer mailing list