Получить список таблиц, но не включать системные таблицы (SQL Server 2K)? - PullRequest
5 голосов
/ 10 июля 2010

Я знаю, что могу получить список таблиц из данной базы данных с помощью следующего запроса:

select *
from information_schema.tables

Как мне исключить системные таблицы?

Ответы [ 5 ]

6 голосов
/ 16 января 2013

Я знаю, что это довольно старый вопрос, но кто-то только что отредактировал его, чтобы воскресить, и «правильный» ответ, с моей точки зрения, не один из двух перечисленных. принятый ответ включает несколько «системных» таблиц (в комментариях упоминается dtproperties. Если бы у пользователя была какая-либо репликация, он нашел бы еще несколько).

В другом ответе используется таблица 2005 года, но она почти правильна. Для 2000 вы хотите использовать OBJECTPROPERTY вместо:

select name from sysobjects where
    OBJECTPROPERTY(id,N'IsTable')=1 and
    OBJECTPROPERTY(id,N'IsMSShipped')=0
6 голосов
/ 10 июля 2010
select name from sysobjects where type='U'
3 голосов
/ 10 июля 2010
SELECT name FROM [database].sys.tables where is_ms_shipped=0
1 голос
/ 17 июля 2018
    SELECT *
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME NOT LIKE 'sys%'

Не элегантное решение, но это был мой быстрый способ исключить dbo.sysdiagrams, единственную системную таблицу в моем списке.

0 голосов
/ 12 июля 2013

Я знаю, что это довольно старый вопрос, но вы можете выполнить хранимую процедуру сервера sql:

EXEC sp_tables @table_name = "%", @table_owner = "%", @ table_type= "'TABLE'"

и получите список таблиц.Но не поддерживается с SQL 2K.Существует с сервера 2005 года ...

...