Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить список объектов в таблице? / 13 сообщений из 13, страница 1 из 1
26.11.2020, 14:15
    #40022457
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
Всем привет.

Подскажите, каким способом можно получить список всех объектов в таблице, ключи, триггеры, индексы итд?
...
Рейтинг: 0 / 0
26.11.2020, 14:29
    #40022463
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa,

через метаданные.
список всех системных объектов можно получить примерно таким запросом:
Код: sql
1.
select distinct object_name(object_id) from sys.all_columns where name = 'object_id' and object_schema_name(object_id) = 'sys' order by 1;



а уже на основе него выбирать нужные вьюхи/функции что бы получать конкретные данные в зависимости от необходимого типа.

sp_help кстати показывает инфо о таблице в достаточно полном объеме информации
...
Рейтинг: 0 / 0
26.11.2020, 15:01
    #40022477
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa,

Код: sql
1.
2.
select * from sys.objects where parent_object_id = xxxx
select * from sys.indexes where object_id = xxx 
...
Рейтинг: 0 / 0
26.11.2020, 17:17
    #40022511
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
Спасибо, то что нужно. Подскажите, а есть хранимка которая создает скрипт по аналогии CREATE to из контекстного меню студии?
...
Рейтинг: 0 / 0
26.11.2020, 17:34
    #40022515
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa
хранимка которая создает скрипт по аналогии CREATE to из контекстного меню студии?


sp_helptext ?

пс
аа, это для таблицы CREATE нужен ... тогда не то :(
...
Рейтинг: 0 / 0
26.11.2020, 17:38
    #40022518
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa,

импортируйте проект базы в VS, будет вам и белка, будет и свисток.
...
Рейтинг: 0 / 0
26.11.2020, 18:13
    #40022527
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa
Спасибо, то что нужно. Подскажите, а есть хранимка которая создает скрипт по аналогии CREATE to из контекстного меню студии?

стандартной хранимки нет
есть разный самопис вроде такого:
https://stackoverflow.com/questions/706664/generate-sql-create-scripts-for-existing-tables-with-query
...
Рейтинг: 0 / 0
27.11.2020, 09:12
    #40022644
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
komrad
teCa
Спасибо, то что нужно. Подскажите, а есть хранимка которая создает скрипт по аналогии CREATE to из контекстного меню студии?

стандартной хранимки нет
есть разный самопис вроде такого:
https://stackoverflow.com/questions/706664/generate-sql-create-scripts-for-existing-tables-with-query


Да, что-то подобное, но здесь только сама структура и индексы, грубо говоря, у меня есть список таблиц, для каждой я выполню:

Код: sql
1.
2.
select * from sys.objects where parent_object_id = xxxx
select * from sys.indexes where object_id = xxx 



По полученному результату я должен сформировать скрипт, который создаст копию этой таблицы со всеми объектами, индексы, ограничения, триггеры.
...
Рейтинг: 0 / 0
27.11.2020, 09:16
    #40022646
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa
komrad
пропущено...

стандартной хранимки нет
есть разный самопис вроде такого:
https://stackoverflow.com/questions/706664/generate-sql-create-scripts-for-existing-tables-with-query


Да, что-то подобное, но здесь только сама структура и индексы, грубо говоря, у меня есть список таблиц, для каждой я выполню:

Код: sql
1.
2.
select * from sys.objects where parent_object_id = xxxx
select * from sys.indexes where object_id = xxx 



По полученному результату я должен сформировать скрипт, который создаст копию этой таблицы со всеми объектами, индексы, ограничения, триггеры.
Закат солнца вручную. Владислав Колосов уже написал выше, чем надо пользоваться.
...
Рейтинг: 0 / 0
27.11.2020, 09:43
    #40022652
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
Ennor Tiegael,

Не совсем понял его сообщение, можно более развернуто?
...
Рейтинг: 0 / 0
27.11.2020, 11:54
    #40022706
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa,

установите Visual Studio, хоть бы Community, с компонентами разработка базы данных и импортируйте в решение проект вашей базы. Получите таблицы с ключами, индексами и прочим. Разрабатывайте базу в проекте, а не на сервере.
...
Рейтинг: 0 / 0
27.11.2020, 12:05
    #40022718
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
teCa,

В Visual Studio есть workload под названием SSDT (SQL Server Data Tools).

Позволяет создавать проекты БД, писать код, а главное - деплоить это все, и схему и код.
Также есть Schema Compare, который может селективно создавать / обновлять объекты базы, в зависимости от вашего выбора. Из него же можно сгенерить deployment script, который потом можно прогнать на базе вручную (полезно, если вам надо выложить новую версию на несколько баз).
Есть SQL Refactor, умеющий автоматизировать некоторые базовые вещи (Rename, Move to Schema, Expand Wildcards, что-то еще).
Есть Dependency Tracker, который находит все объекты, ссылающиеся на / использующие некоторый данный объект, причем до уровня столбцов.

Дополнительная плюшка в том, что данная версия бесплатна для всех, в т.ч. и бизнесов, так что стандартная отмазка "У нас нет свободных лицензий VS" у начальства не прокатывает. Ставите VS Community Edition, при установке выбираете только Data Tools (иначе лицензия будет нужна), создаете проект SQL Server Database, импортируете в него схему из имеющейся базы, дописываете при необходимости функционал, после чего открываете Schema Compare и в нем источником выбираете ваш проект, а назначением - БД, куда нужно задеплоить изменения. Сравниваете, отключаете ненужные объекты (я обычно исключаю Role Membership, Permission, User, потому что они почти всегда environment-specific, но бывает что и другие вещи из сравнения исключать приходится - сертификаты, например). Потом, в зависимости от задачи - либо делаете Update прямо оттуда, либо Generate Script. Далее по обстоятельствам.
...
Рейтинг: 0 / 0
30.11.2020, 01:54
    #40023233
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить список объектов в таблице?
Ennor Tiegael
teCa,

В Visual Studio есть workload под названием SSDT (SQL Server Data Tools).

Позволяет создавать проекты БД, писать код, а главное - деплоить это все, и схему и код.
Также есть Schema Compare, который может селективно создавать / обновлять объекты базы, в зависимости от вашего выбора. Из него же можно сгенерить deployment script, который потом можно прогнать на базе вручную (полезно, если вам надо выложить новую версию на несколько баз).
Есть SQL Refactor, умеющий автоматизировать некоторые базовые вещи (Rename, Move to Schema, Expand Wildcards, что-то еще).
Есть Dependency Tracker, который находит все объекты, ссылающиеся на / использующие некоторый данный объект, причем до уровня столбцов.

Дополнительная плюшка в том, что данная версия бесплатна для всех, в т.ч. и бизнесов, так что стандартная отмазка "У нас нет свободных лицензий VS" у начальства не прокатывает. Ставите VS Community Edition, при установке выбираете только Data Tools (иначе лицензия будет нужна), создаете проект SQL Server Database, импортируете в него схему из имеющейся базы, дописываете при необходимости функционал, после чего открываете Schema Compare и в нем источником выбираете ваш проект, а назначением - БД, куда нужно задеплоить изменения. Сравниваете, отключаете ненужные объекты (я обычно исключаю Role Membership, Permission, User, потому что они почти всегда environment-specific, но бывает что и другие вещи из сравнения исключать приходится - сертификаты, например). Потом, в зависимости от задачи - либо делаете Update прямо оттуда, либо Generate Script. Далее по обстоятельствам.


Звучит круто, спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить список объектов в таблице? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]