Usando el procedimiento almacenado sp_msforeachtable
es posible ejecutar una secuencia de comandos para todas las tablas en una base de datos.Cómo comprobar si las tablas de SQL Server son tablas de sistema
Sin embargo, hay tablas del sistema que me gustaría excluir de eso. Instintivamente, verificaría las propiedades IsSystemTable
o IsMSShipped
. Estos no funcionan como espero - Tengo por ejemplo, una tabla llamada __RefactorLog
:
Pero cuando me consulta si se trata de un sistema o MS Enviado tabla, SQL Server informa de que ninguno de mis cuadros son del sistema tablas:
exec (N'EXEC Database..sp_msforeachtable "PRINT ''? = '' + CAST(ObjectProperty(Object_ID(''?''), ''IsSystemTable'') AS VARCHAR(MAX))"') AS LOGIN = 'MyETLUser'
-- Results of IsSystemTable:
[dbo].[__RefactorLog] = 0
[schema].[myUserTable] = 0
y
exec (N'EXEC Database..sp_msforeachtable "PRINT ''? = '' + CAST(ObjectProperty(Object_ID(''?''), ''IsMSShipped'') AS VARCHAR(MAX))"') AS LOGIN = 'MyETLUser'
-- Results of IsMSShipped:
[dbo].[__RefactorLog] = 0
[schema].[myUserTable] = 0
Cuando miro en las propiedades de la tabla (en el interior SSMS), la tabla se marca como SY objeto tallo Sin embargo, no existe una propiedad de objeto como IsSystemObject
(AFAIK).
¿Cómo puedo comprobar si una tabla es un objeto del sistema, además de la propiedad del objeto? ¿Cómo comprueba SSMS si una tabla es un objeto del sistema?
Aunque esta pregunta se parece a http://stackoverflow.com/questions/3216219/get-list-of-tables-but-not-include-system-tables-sql-server-2k, no se duplica como las formas de verificar las propiedades de los objetos han cambiado desde SQL Server 2000 y estoy preguntando cómo lo verifica SSMS. – vstrien
Siempre puede ejecutar el perfilador de SQL Server contra su servidor al abrir la carpeta "Tablas del sistema" y ver qué SQL está ejecutando. –