Обратите внимание, что это также будет включать в себя VIEWS, а не только таблицы
Натан Куп
17
Добавьте имя базы данных, если вы не используете конкретную базу данных, так что это будет SELECT TABLE_NAME FROM <DATABASE_NAME> .INFORMATION_SCHEMA.Tables
Shriroop
22
Добавление WHERE TABLE_TYPE='BASE TABLE'будет включать только базовые таблицы (и по расширению вы всегда можете использовать WHERE TABLE_TYPE != 'VIEW').
Филипп Копли
3
"sysdiagrams" также появляется в этом списке :(
celsowm
4
sysdiagrams - это обычная таблица, вы всегда должны исключать ее вручную с помощью AND name <> 'sysdiagrams'.
Кристоф
199
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype ='U'
Вот список других типов объектов, которые вы также можете искать:
Псевдоним немного избыточен: SELECT name FROM sysobjects WHERE xtype = 'U'будет делать то же самое.
ПАОПеленд
Спасибо, сначала я попробовал это с несколькими операторами выбора для и PK,FK,D,C,V,UQт. Д., Чтобы сравнить исходную и целевую базу данных, но затем я нашел эту функцию в VS, но разве нет sql queryвозможности сравнить полную исходную и целевую базу данных?
Shaijut
Вы задаетесь вопросом, почему 'U'используется для идентификации таблицы пользователей ... в отличие от, может быть, 'UT'или, наиболее интуитивно, 'T'... Ах, ну, это работает!
SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams'; потому что таблица системных диаграмм, хотя и создается Microsoft SQL Server Management Studio, технически не системная таблица, а та, которую мы обычно предпочитаем исключать.
Кристоф
5
Недостатком INFORMATION_SCHEMA.TABLESявляется то, что он также включает системные таблицы, такие как dtpropertiesи MSpeer_...таблицы, без возможности отличить их от ваших собственных таблиц.
Я бы порекомендовал использовать sys.objects(новую версию устаревшего представления sysobjects ), которая поддерживает исключение системных таблиц:
select*from sys.objects
where type ='U'-- User tablesand is_ms_shipped =0-- Exclude system tables
Ну, вы можете использовать sys.objects, чтобы получить все объекты базы данных.
GO
select*from sys.objects where type_desc='USER_TABLE'orderby name
GO
ИЛИ
-- For all tablesselect*from INFORMATION_SCHEMA.TABLES
GO
--- For user defined tablesselect*from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE'
GO
--- For Viewsselect*from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='VIEW'
GO
SHOW TABLES
(как используется в MySQL)?Ответы:
SQL Server 2000, 2005, 2008, 2012, 2014, 2016, 2017 или 2019:
Показывать только таблицы из определенной базы данных
Или,
PS: для SQL Server 2000:
источник
WHERE TABLE_TYPE='BASE TABLE'
будет включать только базовые таблицы (и по расширению вы всегда можете использоватьWHERE TABLE_TYPE != 'VIEW'
).AND name <> 'sysdiagrams'
.Вот список других типов объектов, которые вы также можете искать:
источник
SELECT name FROM sysobjects WHERE xtype = 'U'
будет делать то же самое.PK,FK,D,C,V,UQ
т. Д., Чтобы сравнить исходную и целевую базу данных, но затем я нашел эту функцию в VS, но разве нетsql query
возможности сравнить полную исходную и целевую базу данных?'U'
используется для идентификации таблицы пользователей ... в отличие от, может быть,'UT'
или, наиболее интуитивно,'T'
... Ах, ну, это работает!ИЛИ
источник
ИЛИ
источник
SQL Server 2012
источник
источник
(Стандарт SQL Server 2000; все еще поддерживается в SQL Server 2005.)
источник
select * from sysobjects where xtype='U'
источник
источник
SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams';
потому что таблица системных диаграмм, хотя и создается Microsoft SQL Server Management Studio, технически не системная таблица, а та, которую мы обычно предпочитаем исключать.Недостатком
INFORMATION_SCHEMA.TABLES
является то, что он также включает системные таблицы, такие какdtproperties
иMSpeer_...
таблицы, без возможности отличить их от ваших собственных таблиц.Я бы порекомендовал использовать
sys.objects
(новую версию устаревшего представления sysobjects ), которая поддерживает исключение системных таблиц:источник
В SSMS, чтобы получить все полные имена таблиц в конкретной базе данных (например, «MyDatabase»):
Результаты:
источник
Пожалуйста, используйте это. Вы получите имена таблиц вместе с именами схем:
источник
источник
Спасибо Рэю Веге, чей ответ дает все пользовательские таблицы в базе данных ...
sp_helptext показывает основной запрос, который сводится к ...
источник
Ну, вы можете использовать sys.objects, чтобы получить все объекты базы данных.
ИЛИ
источник
Эта ссылка может предоставить гораздо больше информации по этой теме
источник
Использование
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
также показывает все таблицы и связанные столбцы.источник