Запрос для получения названий всех таблиц в Базе данных SQL Server 2008 года

Действительно ли возможно записать запрос, который даст мне названия всех таблиц в базе данных SQL Server? Я работаю над некоторыми 'после факта' документация относительно системы, которую я не создал и ищу ярлык для получения списка таблиц в базе данных.

30
задан John H. 21 May 2010 в 13:25
поделиться

3 ответа

В одной базе данных - да:

USE your_database
SELECT name FROM sys.tables

Получение всех таблиц во всех базах данных - только с помощью взлома .... см. этот вопрос SO, чтобы узнать о нескольких подходах, как это сделать: Как мне перечислить все таблицы во всех базах данных в SQL Server в одном набор результатов?

49
ответ дан 27 November 2019 в 23:39
поделиться

Попробуйте следующее:

SELECT s.NAME + '.' + t.NAME AS TableName
FROM sys.tables t
INNER JOIN sys.schemas s
    ON t.schema_id = s.schema_id

он отобразит схему + имя таблицы для всех таблиц в текущей базе данных .

Вот версия, в которой будут перечислены все таблицы в каждой базе данных на текущем сервере. он позволяет использовать параметр поиска в любой части или частях сервера + база данных + схема + имена таблиц:

SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
DECLARE @Search nvarchar(4000)
       ,@SQL   nvarchar(4000)
SET @Search=null --all rows
SET @SQL='select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id WHERE @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name LIKE ''%'+ISNULL(@SEARCH,'')+'%'''

INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb @SQL
SET NOCOUNT OFF
SELECT * FROM @AllTables ORDER BY 1

установите @Search в NULL для всех таблиц, установите для него такие вещи, как 'dbo.users' или 'users' или .master.dbo, или даже включать подстановочные знаки, такие как .master.%. u и т. д.

5
ответ дан 27 November 2019 в 23:39
поделиться

по-другому, также будет работать с MySQL и PostgreSQL

select TABLE_NAME from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'BASE TABLE'
8
ответ дан 27 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: