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