MS SQL Server - scripts
9 отговора
607 прегледа
MS SQL Server - scripts
Има ли някаква възможност структурата на база от MS SQL Server (tables, views, sp, triggers) да се изведе в скриптове.
Това се прави с EM, но той не подрежда обектите според зависимостите (dependencies) помежду им, т.e. генерираният скрипт от ЕМ при изпълнение дава грешки за липсващи обекти.
Това се прави с EM, но той не подрежда обектите според зависимостите (dependencies) помежду им, т.e. генерираният скрипт от ЕМ при изпълнение дава грешки за липсващи обекти.
Re: MS SQL Server - scripts
Благодаря за отговора !
Но мисля, че ни си ми разбрал проблема. Аз не искам да копирам данни (без да съм ползвал bcp, но доколкото знам служи за копиране на данни).
Целта ми е при скриптиране на базата (tables, views and etc.) да получа един script файл,
в който обектите да бъдат подредени според техните зависимости.
Пример :
При скриптиране на Views : във View1 аз мога да ползвам View5, a EM ги подрежда
-- View1 -- например (SELECT * FROM View5)
-- View2
...
-- View5
и при изпълнение на скрипта при създаване на View1 ще ми се даде грешка за липсващо View5.
т.е. търся начин при за подредба :
-- View5
-- View2
...
-- View1 (SELECT * FROM View5)
Но мисля, че ни си ми разбрал проблема. Аз не искам да копирам данни (без да съм ползвал bcp, но доколкото знам служи за копиране на данни).
Целта ми е при скриптиране на базата (tables, views and etc.) да получа един script файл,
в който обектите да бъдат подредени според техните зависимости.
Пример :
При скриптиране на Views : във View1 аз мога да ползвам View5, a EM ги подрежда
-- View1 -- например (SELECT * FROM View5)
-- View2
...
-- View5
и при изпълнение на скрипта при създаване на View1 ще ми се даде грешка за липсващо View5.
т.е. търся начин при за подредба :
-- View5
-- View2
...
-- View1 (SELECT * FROM View5)
Re: MS SQL Server - scripts
Znachi ako ima takova neshto edna podobna structura bi mu razkazala igrata...
runni tova
create view a1
as
select * from t1
go
create view a2
as
select * from a1
go
alter view a1
as
select * from a2
go
Zamisli se koe view shte bude purvo v script-a...
A inache kato ideia ako ne polzvash imena na koloni ot edno view kum drugo .. demek ako polzvash select * from a1 mozhe da probvash slednoto ..
1. select 'create view ' + name + ' as select * from users Go ' from sysobjects
where xtype = 'V'
natiskash v Query analizer Ctrl+T i resultata ot zaiavka 1 go runvash.
(taka shte si suzdadesh "Mente" View-ta)
2. zimash scripta koito ti generira EM i go pastevash v Query Analyzer i natiskash Ctrl+H ... i replacevash Create s Alter ...
tova shte te oprai
ako polzvash imena na koloni shte triabva da si poigraesh malko da si generirash zaiavkata koiato ti prai "Mente" view-ta da selectva '' as NameNaColona za da ne ti grumne posle ALter view-to .. ma tova go ostaviam na tebe ...
pocheti malko za sysobjects i syscolumns ....
are uspeh
P.S. - mozhe tova da ne e the best way no mislia che shte ti svurshi rabota ...
runni tova
create view a1
as
select * from t1
go
create view a2
as
select * from a1
go
alter view a1
as
select * from a2
go
Zamisli se koe view shte bude purvo v script-a...
A inache kato ideia ako ne polzvash imena na koloni ot edno view kum drugo .. demek ako polzvash select * from a1 mozhe da probvash slednoto ..
1. select 'create view ' + name + ' as select * from users Go ' from sysobjects
where xtype = 'V'
natiskash v Query analizer Ctrl+T i resultata ot zaiavka 1 go runvash.
(taka shte si suzdadesh "Mente" View-ta)
2. zimash scripta koito ti generira EM i go pastevash v Query Analyzer i natiskash Ctrl+H ... i replacevash Create s Alter ...
tova shte te oprai
ako polzvash imena na koloni shte triabva da si poigraesh malko da si generirash zaiavkata koiato ti prai "Mente" view-ta da selectva '' as NameNaColona za da ne ti grumne posle ALter view-to .. ma tova go ostaviam na tebe ...
pocheti malko za sysobjects i syscolumns ....
are uspeh
P.S. - mozhe tova da ne e the best way no mislia che shte ti svurshi rabota ...
Re: MS SQL Server - scripts
Много ми е интересно, какъв резултат се очаква от изпълнението на
select * from a1
Всъщност изненадан съм, че MS SQL поддържа alter view.
Ако не се лъжа, в SQL92 го няма.

select * from a1
Всъщност изненадан съм, че MS SQL поддържа alter view.
Ако не се лъжа, в SQL92 го няма.
Re: MS SQL Server - scripts
Има специализирани програми за генериране на схемата от БД. Лидерите (според мен) са следните:
[линк]
[линк]
[линк]
С първите две съм работил. Виж на сайтовете може да има някакво демо дето да ти свърши работа.
Ако не, то е хубаво упражнение да си напишеш скрипт за целта.
[линк]
[линк]
[линк]
С първите две съм работил. Виж на сайтовете може да има някакво демо дето да ти свърши работа.
Ако не, то е хубаво упражнение да си напишеш скрипт за целта.
Re: MS SQL Server - scripts
тва че в SQL92 го няма нищо не означава
пък и MS са сложили доста благини в SQL Server-a дето ги няма другаде
пък и MS са сложили доста благини в SQL Server-a дето ги няма другаде
Re: MS SQL Server - scripts
Ot select * from a1 se poluchava tova.
Server: Msg 4429, Level 16, State 1, Procedure a2, Line 3
View or function 'a1' contains a self-reference. Views or functions cannot reference themselves directly or indirectly.
a inache ako imate problem s alter view mozhete da polzvate drop view i create view ....
are s zdrave...
Server: Msg 4429, Level 16, State 1, Procedure a2, Line 3
View or function 'a1' contains a self-reference. Views or functions cannot reference themselves directly or indirectly.
a inache ako imate problem s alter view mozhete da polzvate drop view i create view ....
are s zdrave...
Re: MS SQL Server - scripts
Че какво му е лошото на alter view? В Oracle пък има create or replace view. Всеки слага добавки за удобства
Наздраве
Наздраве
Re: MS SQL Server - scripts
Бе то няма лошо, но съобщението:
View or function 'a1' contains a self-reference
трябва да ти го покаже при alter view, а не да го преглътне мълчаливо, а след това на select * from a1 да реве
Така, че този alter всъщност си е чист replace
, но без проверки

View or function 'a1' contains a self-reference
трябва да ти го покаже при alter view, а не да го преглътне мълчаливо, а след това на select * from a1 да реве
Така, че този alter всъщност си е чист replace