SQL Запрос на перечисление всех таблиц + столбцов в указанной c базе данных / сервере? - PullRequest
0 голосов
/ 10 июля 2020

У меня много серверов от ABC001 до ABC100, и на каждом из них более 100 компаний, каждая из которых имеет более 100 таблиц. Я хочу выбрать конкретный сервер c (например, ABC005), чтобы получить список всех таблиц. Я не хочу получать этот список буквально для всего, от ABC001 до ABC100.

Я знаю, что могу вытащить его с помощью

Select * 
FROM INFORMATION_SCHEMA.COLUMNS

Но есть ли способ указать на конкретный c сервер / БД, чтобы я мог экономить ресурсы и время?

Должен ли он быть, например, ОТ ABC005.dbo.INFORMATION_SCHEMA.COLUMNS?

1 Ответ

1 голос
/ 10 июля 2020

Не знаю, как попасть на указанный c сервер. Добавление имени БД перед ABC005.INFORMATION_SCHEMA.COLUMNS (без .dbo.) работает. Но я считаю, что данные, полученные из следующего запроса, немного легче читать:

select t.name
      ,c.name
      ,st.name as system_type
      ,c.max_length
      ,c.precision
      ,c.scale
      ,d.definition
      ,c.is_nullable
      ,c.is_rowguidcol
      ,c.is_filestream
from   ABC005.sys.tables t 
       inner join ABC005.sys.columns c on t.object_id = c.object_id
       inner join ABC005.sys.types st on c.system_type_id = st.user_type_id
       left outer join ABC005.sys.default_constraints d on c.default_object_id = d.object_id
where  t.type = 'U'
order by t.name, c.column_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...