¿Cómo determino si existe una tabla en una base de datos de SQL Server en SQL Server 2008?


13

¿Cómo determino si existe una tabla en una base de datos de SQL Server en SQL Server 2008?

Respuestas:


18

Si consulta la tabla sysobjects, con una consulta como

SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'yourTableName'

xtype = 'U' es una tabla de usuario

entonces puede envolver esto es una declaración SI EXISTE

IF EXISTS (SELECT * FROM sysobjects ...)
BEGIN
    ' do your stuff here if it exists
END 

55
+1 Es importante tener en cuenta que Microsoft ha estado moviendo funcionalidades como esta a Vistas de administración dinámica (DMV) desde SQL Server 2005. Esto técnicamente funcionará, pero Microsoft ahora recomienda usar el DMV sys.tables para esto. SI EXISTE (SELECCIONE * DESDE sys.tables WHERE type = 'U' AND name = 'yourTableName'). Funcionalmente, su declaración y mi declaración hacen exactamente lo mismo. Solo quería mencionar los DMV. Para obtener más información sobre los DMV, consulte la documentación msdn.microsoft.com/en-US/library/ms188754%28v=SQL.105%29.aspx
Matt M

Esa es una buena llamada Matt. Los viejos hábitos tardan en morir :-) El tuyo es la mejor manera.
Miles D

1
No estoy seguro si hace mucha diferencia, pero preferiría SI EXISTE (SELECCIONE 1 DE sys.tables ...)
David Hayes

@DavidHayes Sí, supongo que esta solución es más rápida porque no consulta para encontrar nombres de columnas.
Xriuk

12

Aquí hay una forma más de encontrarlo

IF OBJECT_ID('tablename') IS NULL
PRINT 'Table Does not Exist'

Agradable y simple, no es necesario consultar tablas de sistemas complejos. ¡Gracias!
Shadow9

2
¿No detectaría eso, por ejemplo, vistas del mismo nombre? ¿Quizás procedimientos almacenados y tal también?
MarioDS

No si su esquema califica el objeto.
Grant Fritchey

1
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_NAME = 'your table name here')
BEGIN
  PRINT 'Table Exists'
END
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.