Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить скрипт всей БД программным способом? / 8 сообщений из 8, страница 1 из 1
16.09.2002, 12:57:40
    #32050691
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
Как получить скрипт всей БД программным способом?

Через VB, например?
...
Рейтинг: 0 / 0
16.09.2002, 13:28:41
    #32050700
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
Если бы ты воспользовался поиском, как я, то нашел бы эту ссылку: /topic/4797\r
]/topic/4797
...
Рейтинг: 0 / 0
16.09.2002, 13:35:59
    #32050703
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
Я просмотрел эту тему, прежде чем создавать новый топик.
Метод Script скриптует один объект базы... Для того чтобы проскриптовать всю базу, нужно скриптовать каждый объект в отдельности (и причем в нужном порядке).
Или я чего-то не допонимаю?

Есть ли другой способ?
...
Рейтинг: 0 / 0
16.09.2002, 13:53:57
    #32050711
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
В DTS есть такая задача Copy SQL Server Objects, которая при соотвествующей настройке генерирует штук 20 скриптов, котрые останется только применить в правильном порядке(ну конечно сначала выяснить каков этот порядок).

Соответсвующие установки можно использовать и для объекта TransferObjectsTask при программировании DTS-ов
...
Рейтинг: 0 / 0
16.09.2002, 15:10:37
    #32050754
Та
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
О порядке: Как его быстро определить, порядок перекачки?? В DTS не встроено ничего такого?
Может, процедурка есть? А то извините, сто штук таблиц - сначала определять очередность, потом перекачивать по одной :((
Оговорюсь, базы не идентичны по структуре, при перекачке некоторых таблиц нужны запросы (которые уже есть). Вот как бы это так загнать всё в один пакет, и чтоб выполнялось без лишних усилий?
...
Рейтинг: 0 / 0
16.09.2002, 17:57:05
    #32050817
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
2Та
- То, о чем говорите вы, завется нахождение и перенесение различий, а не получение скрипта всех объетов базы.

- Copy SQL Server Objects создает скрипты не дя каждого объекта, а для именно для "правильного"(с точки зрения SQL) их создания в другой базе

Т.е. файл .TAB содержит скрипт по созданию всех таблиц НО без constraint, PK, FK и пр.

Добавление же всех FK содержит в себе файл .FKY( спомощью ALTER)
всех PK - .DR1 и пр. и пр.

И когда я говорил про порядок, то имел ввиду порядок запуска этих скриптов.
...
Рейтинг: 0 / 0
17.09.2002, 11:38:41
    #32050910
Panov Vitaly
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
DTS - это хорошо. Но его необходимо создать в базе. А база далеко и сделать этого там никто не может. Все должно делаться из одного exe-ка.

Поэтому проблему решил, все-таки, через SQL-DMO.

Вначале генерирую скрипты на создание всех таблиц, но без constraint-ов! Поэтому порядок не важен.

После того как таблицы созданы - скриптую все ключи (primary, unique, foriegn), затем индексы к таблицам.

После - представления, процедуры и триггеры.

P.S.
Эту схему я подглядел у Enterprise Manager-а :-))
Команда "Generate SQL scripts..." генерирует скрипты похожим образом.
...
Рейтинг: 0 / 0
17.09.2002, 12:40:30
    #32050945
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить скрипт всей БД программным способом?
DTS - это хорошо. Но его необходимо создать в базе. А база далеко и сделать этого там никто не может. Все должно делаться из одного exe-ка

Получение скрипта осуществляется на сервере-источнике, а на нем исходная база должна таки быть.

Вот чуть доработаный пример из BOL

Private Sub RunTransfer(ByVal objPackage As DTS.Package2)
Dim objStep As DTS.Step
Dim objTask As DTS.Task
Dim objXferObj As DTS.TransferObjectsTask

'create step and task
Set objStep = objPackage.Steps.New
Set objTask = objPackage.Tasks.New("DTSTransferObjectsTask")
Set objXferObj = objTask.CustomTask

'configure transfer objects task
With objXferObj
.Name = "XferObjTask"
.SourceServer = "(local)"
.SourceUseTrustedConnection = True
.SourceDatabase = "pubs"
.DestinationServer = "(local)"
.DestinationUseTrustedConnection = True

'/*можно вообще указать любую, т.к.*/
.DestinationDatabase = "SomeOfPubs"
'/*объекты мы НЕ копируем*/
.CopySchema = False
'/*и данные тоже НЕ копируем*/
.CopyData = DTSTransfer_DontCopyData
.DropDestinationObjectsFirst = False

'/*скрипты складываем сюда*/
.ScriptFileDirectory = "X:\MyScripts"

.CopyAllObjects = True
.IncludeDependencies = True

'/*следующие 2 опции на усмотрение*/
.IncludeLogins = False
.IncludeUsers = False
End With

'link step to task
objStep.TaskName = objXferObj.Name
objStep.Name = "XferObjStep"
objPackage.Steps.Add objStep
objPackage.Tasks.Add objTask
End Sub

Тоже самое можно сделать и через DTS, используя Copy SQL Server Objects и сбросив опции Create destination objects и Copy data. Т.к. ни объекты ни данные реально копироватся не будут, то в качестве приемника может выступать любая локальная база(хотя бы таже model).

PS
В этом же DTS-е можно, например, заархивировать полученные файлы скриптов и отправть их почтой.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить скрипт всей БД программным способом? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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