Saber usar
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
para consultar uma lista de tabelas, não estou encontrando nenhuma maneira de recuperar apenas uma lista de tabelas que não são do sistema.
Ou seja, a consulta acima também lista tabelas de sistema como "sysdiagrams" ou "dtproperties".
Então minha pergunta é:
Como consultar um banco de dados para a existência de quaisquer tabelas de usuário?
O seguinte de sys.tables funcionará. is_ms_shipped define se o objeto é ou não uma tabela da Microsoft, porém sys.tables deve conter apenas tabelas definidas pelo usuário
Para excluir sysdiagrams da lista, aqui está algo que peguei emprestado de Aaron Bertrand neste fórum
Você também pode conferir esta resposta no Stack Overflow