|
Тема
|
mssql scripting order
|
|
Автор |
z_free (людоед) |
Публикувано | 06.06.05 23:58 |
|
Здравейте, налага ми се да ползвам mssql и когато генерирам sql script от enterprise manager (примерно на 10 нови обекта, които ползват един друг) мога ли да им задам в какъв ред да ги скриптва? Щото то ги скриптва в произволен ред, и после този скрипт не работи, тъй като опитва да създаде обект, който зависи от още несъздаден такъв.
-------------
Special killer double trouble triple extra nicotine monster!
| |
Тема
|
Re: mssql scripting order
[re: z_free]
|
|
Автор |
Miro () |
Публикувано | 07.06.05 07:59 |
|
Не може - трябва сам да си ги подредиш
--
Miroslav Penchev
| |
Тема
|
Re: mssql scripting order
[re: z_free]
|
|
Автор |
fiffy () |
Публикувано | 07.06.05 16:16 |
|
Едно стандартно решение на проблема е да генерираш 2 скрипта: за първия казваш на ЕМ да генерира само КРЕАТЕ ТАБЛЕ статемент-и (без ФК, ...), на втория казваш да генерира всичко останало. Изпълняваш ги един след друг и всичко ще е ок...
Епа, това е моето хоби...
| |
Тема
|
Re: mssql scripting order
[re: fiffy]
|
|
Автор |
Miro () |
Публикувано | 07.06.05 17:55 |
|
Идеята не работи за VIEW-тата, защото може да има зависимости между самите view-та - а те няма как да се подредят, защото се генерират наведнъж.
--
Miroslav Penchev
| |
Тема
|
Re: mssql scripting order
[re: Miro]
|
|
Автор | Maлa (Нерегистриран) |
Публикувано | 10.06.05 14:35 |
|
като "Genrate SQL script" прозореца и там има един таб "Formatting" И тан чекни "Generate script for all dependent objects" . Обърни внимание и на таба "Options" в смисъл. че и там можеш да указваш дали да се включат FK и PK.
| |
Тема
|
Re: mssql scripting order
[re: Maлa]
|
|
Автор |
Miro () |
Публикувано | 11.06.05 13:03 |
|
Но тези опции не ти подреждат VIEW-тата в необходимия за правилното създаване ред. Ако VIEW1 използва VIEW2 то напълно е възможно в генерирания скрипт първо да се създава VIEW1 и чак след него VIEW2. При което такъв скрипт ще гръмне и няма да може да създаде VIEW-тата.
--
Miroslav Penchev
| |
|
Не е много произволен, по азбучен ред ги нарежда. По принцип за последния пач пише че го оправя но е работи читаво само за малко на брой обекти.
Аз като create-вам база от скрипт така, го пускам 5-6 пъти. В result pane-а търся 'ivalid', ако го няма значи сичко е ОК, ако го има .... четеш грешката.
| |
Тема
|
Re: mssql scripting order
[re: AzSumZmei]
|
|
Автор |
Miro () |
Публикувано | 11.06.05 14:10 |
|
Пък да ви кажа аз как си решавам проблема :
Всеки един обект (таблица, view, функция и т.н.) от базата си има собствен скрипт файл. Ако трябва нещо да се променя по обекта - променя се неговия скрипт файл и се стартира към базата, за да се отрази промяната.
Когато трябва да се направи чисто нова база използвам следния трик: Прави се include.sql в който има само директиви #include <име на файл.sql> за всеки един обект, които са подредени според техните взаимни връзки. Когато ми трябва пълен скрипт на базата - пускам този include.sql (всъщност са над 20-тина такива файлове с #include-и) през един мой parser (нищо сложно, даже може да се ползва препроцесора на MSVC) и получавам изходен файл, в който са include-нати всички скриптове в подходящия ред.
--
Miroslav Penchev
| |
|
|
|
|