Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 генерация кода CREATE  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
По правому клику мыши в Object Explorer можно генерить скрипты CREATE для существующих таблиц, процедур, и т.п.
Меня же особо интересуют уже существующие объекты ServiceBroker.
Допустим по правому клику можно заскриптовать контракт:
CREATE CONTRACT [//ff/contractFilInfo] AUTHORIZATION [dbo] ([//ff/msgPriceInfo] SENT BY INITIATOR,
[//ff/msgStoresInfo] SENT BY INITIATOR)
GO


Вопрос:
Как можно проще всего получить этот же скрипт по данным таблицы sys.service_contracts ?
Есть ли готовые решения, кроме как врукопашную самому генерить его по данным таблицы?
Может есть готовые системные процедуры или функции в которые достаточно передать тип объекта, его id и команду CREATE/ALTER?

Буду благодарен за любую информацию по теме
14 янв 13, 17:29    [13768312]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Leax
Есть ли готовые решения, кроме как врукопашную самому генерить его по данным таблицы?
Может и есть, ищите.
Leax
Может есть готовые системные процедуры или функции в которые достаточно передать тип объекта, его id и команду CREATE/ALTER?
Нет.
14 янв 13, 17:49    [13768462]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Leax
Как можно проще всего получить этот же скрипт по данным таблицы sys.service_contracts ?
Если один-два контракта, то мышкой, если много - то можно за минуту написать select, выдающий текст вида "CREATE CONTRACT..."
14 янв 13, 19:01    [13768896]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
Leax
Есть ли готовые решения, кроме как врукопашную самому генерить его по данным таблицы?

Есть - SMO.
14 янв 13, 19:15    [13768959]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
Leax,

все есть во вьюхах - http://msdn.microsoft.com/ru-ru/library/ms173780.aspx
генерите динамик SQL что то наподобие:
select 'create queue '+object_schema_name(object_id)+'.'+name
from sys.service_queues
15 янв 13, 09:29    [13770354]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
Всем спасибо. А вот это особенно интересно, нужно будет попробовать:
Сон Веры Павловны
Leax
Есть ли готовые решения, кроме как врукопашную самому генерить его по данным таблицы?

Есть - SMO.
15 янв 13, 12:47    [13771433]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Leax
А вот это особенно интересно, нужно будет попробовать:
Неужели это проще одной строки на T-SQL???
Писать на чём-то прогу, инсталлер и всё такое - вместо одной строки (ну или десятка строк) :-)
15 янв 13, 12:52    [13771481]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Leax
Member

Откуда: Киев
Сообщений: 438
alexeyvg
Leax
А вот это особенно интересно, нужно будет попробовать:
Неужели это проще одной строки на T-SQL???
Писать на чём-то прогу, инсталлер и всё такое - вместо одной строки (ну или десятка строк) :-)

Посмотреть будет полезно, т.к. всё-равно на C# пишу. CREATE для сложных взаимосвязанных таблиц не так то легко самому сгенерить.
Пока же делаю свои процедуры генерации объектов на T-SQL )
15 янв 13, 13:07    [13771600]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
мысли в слух
Guest
alexeyvg
Leax
А вот это особенно интересно, нужно будет попробовать:
Неужели это проще одной строки на T-SQL???
Писать на чём-то прогу, инсталлер и всё такое - вместо одной строки (ну или десятка строк) :-)

универсальность, не?
для разовой операции оно конечно не надо, но если на потоке (зачем-то), то проще так, чем для каждого типа объекта свой сборщик скрипта придумывать (да еще и с кучей флажков).
15 янв 13, 13:11    [13771628]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
мысли в слух,

А есть уверенность что например сгенерить при помощи SMO скрипт создания индекса или таблицы будет корректным когда объект, для примера, секционирован? ))
15 янв 13, 14:05    [13772144]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
мысли в слух
для разовой операции оно конечно не надо, но если на потоке (зачем-то), то проще так, чем для каждого типа объекта свой сборщик скрипта придумывать (да еще и с кучей флажков).
А, ну это конечно, я говорил только про скрипт генерации контрактов...
15 янв 13, 14:07    [13772158]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
ilad77
Member

Откуда:
Сообщений: 7
RedGate SQL Compare, SQL Doc

http://www.red-gate.com/
15 янв 13, 14:25    [13772326]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
мысли в слух
Guest
Алексей Куренков
мысли в слух,

А есть уверенность что например сгенерить при помощи SMO скрипт создания индекса или таблицы будет корректным когда объект, для примера, секционирован? ))

понятие не имею, проверьте, что может быть проще?
15 янв 13, 15:28    [13772807]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
мысли в слух,

по крайней мере обычным правым кликом мыши на таблице или индексе, команда "создать скрипт", в случае секционированного объекта, не указывает схему секционирования - это я проверял не так давно... поэтому и пользовался вьюхами для генерации дублирующих таблиц и индексов... а дальше проверять... ну... сори, лень. я в основном или SSMS или VS-SSIS/SSRS сижу... в powershell или другие скриптовые языки лезть ломает.
15 янв 13, 16:09    [13773190]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Алексей Куренков
по крайней мере обычным правым кликом мыши на таблице или индексе, команда "создать скрипт", в случае секционированного объекта, не указывает схему секционирования

Tools — Options — SQL Server Object Explorer — Scripting — Table and view options — Script partition schemes — True.
15 янв 13, 16:17    [13773247]     Ответить | Цитировать Сообщить модератору
 Re: генерация кода CREATE  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Это для SQL Server 2008R2, если что.
15 янв 13, 16:18    [13773257]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить