powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как в ErWin перенести в базу комментарии к полям?
3 сообщений из 3, страница 1 из 1
Как в ErWin перенести в базу комментарии к полям?
    #32187601
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в ErWin 4.1 перенести в базу SQL2000 комментарии к полям?
...
Рейтинг: 0 / 0
Как в ErWin перенести в базу комментарии к полям?
    #32193380
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал перенос комментариев. Может кому-то будет нужно, помещаю процедуру. Для переноса нужно сохранить файл в xml-формате, написать простенькую программу которая будет вызывать эту процедуру, передавая тело xml-файла модели как параметр.

[source]
/******************************************************
Описание
Перенос примечаний к столбцам из ErWin4.1-модели
Если примечания нет, переносится название в логической модели
Параметры
@xmlIn - xml-файл модели

История изменений
06/26/2003 - создан andsm
*******************************************************/
CREATE PROCEDURE DB_CreateDefinition @xmlIn text AS
set nocount on
declare @idoc int
exec sp_xml_preparedocument @idoc OUTPUT, @xmlIn
declare @CrsWork cursor
set @CrsWork=cursor for
SELECT *
FROM OPENXML (@idoc, '/ERwin4/Model/Entity_Groups/Entity/Attribute_Groups/Attribute/AttributeProps/Physical_Name')
with(LogicalName varchar(128) '../../@Name' ,
EntityName varchar(128) '../../../../@Name',
EntityPropsName varchar(128) '../../../../EntityProps/Name',
PhysicalName varchar(128) '../Physical_Name',
Definition varchar(7500) '../Definition'
)

declare @LogicalName varchar(128),
@EntityName varchar(128) ,
@EntityPropsName varchar(128) ,
@PhysicalName varchar(128),
@Definition varchar(7500)

declare @strSQL varchar(8000),
@iCount int
open @CrsWork
fetch next from @CrsWork into @LogicalName, @EntityName, @EntityPropsName, @PhysicalName, @Definition
-- insert into testdb..TT (Name) values('Test')
while @@fetch_status=0
begin
if (@Definition IS NULL or RTrim(@Definition)='')
set @Definition=@LogicalName


set @iCount=(select count(*) from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', @EntityName, 'column', @PhysicalName) xp where xp.name in ('MS_Description') )
if (@ICount>0)
set @strSQL='EXECUTE sp_updateextendedproperty N''MS_Description'', N'''+@Definition+''' , N''user'', N''dbo'', N''table'', N'''+@EntityName+''', N''column'', N'''+@PhysicalName+''''
else
set @strSQL='EXECUTE sp_addextendedproperty N''MS_Description'', N'''+@Definition+''' , N''user'', N''dbo'', N''table'', N'''+@EntityName+''', N''column'', N'''+@PhysicalName+''''
if (Object_ID(@EntityName) IS NOT NULL)
begin
set @iCount=(select count(*) from syscolumns where id=Object_ID(@EntityName) and [name] in(@PhysicalName))
if @iCount>0
begin
--insert into testdb..TT (Name) values(@strSQL)
exec (@strSQL)
end
-- else
-- insert into testdb..TErr (strSQL) values('@EntityName='+@EntityName+' '+'@PhysicalName='+@PhysicalName)
end
-- else
-- insert into testdb..TErr (strSQL) values('@EntityName='+@EntityName+' '+'@PhysicalName='+@PhysicalName)

-- EXECUTE sp_addextendedproperty N'MS_Description', @Definition , N'user', N'dbo', N'table', @EntityName, N'column', @PhysicalName
fetch next from @CrsWork into @LogicalName, @EntityName, @EntityPropsName, @PhysicalName, @Definition
end

close @CrsWork
deallocate @CrsWork

SELECT *
FROM OPENXML (@idoc, '/ERwin4/Model/Entity_Groups/Entity/Attribute_Groups/Attribute/AttributeProps/Physical_Name')
with(LogicalName varchar(128) '../../@Name' ,
EntityName varchar(128) '../../../../@Name',
EntityPropsName varchar(128) '../../../../EntityProps/Name',
PhysicalName varchar(128) '../Physical_Name',
Definition varchar(7500) '../Definition')

EXEC sp_xml_removedocument @idoc
GO

[/source]
...
Рейтинг: 0 / 0
Как в ErWin перенести в базу комментарии к полям?
    #32193384
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал перенос комментариев. Может кому-то будет нужно, помещаю процедуру. Для переноса нужно сохранить файл в xml-формате, написать простенькую программу которая будет вызывать эту процедуру, передавая тело xml-файла модели как параметр.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
 
 /****************************************************** 
Описание 
Перенос примечаний к столбцам из ErWin4.1-модели 
Если примечания нет, переносится название в логической модели 
Параметры 
@xmlIn - xml-файл модели 

История изменений 
06/26/2003 - создан andsm 
*******************************************************/  
CREATE PROCEDURE DB_CreateDefinition @xmlIn text AS 
set nocount on 
declare @idoc int 
exec sp_xml_preparedocument @idoc OUTPUT, @xmlIn 
declare @CrsWork cursor 
set @CrsWork=cursor for 
SELECT * 
FROM OPENXML (@idoc, '/ERwin4/Model/Entity_Groups/Entity/Attribute_Groups/Attribute/AttributeProps/Physical_Name') 
with(LogicalName varchar( 128 ) '../../@Name' , 
EntityName varchar( 128 ) '../../../../@Name', 
EntityPropsName varchar( 128 ) '../../../../EntityProps/Name', 
PhysicalName varchar( 128 ) '../Physical_Name', 
Definition varchar( 7500 ) '../Definition' 
) 

declare @LogicalName varchar( 128 ), 
@EntityName varchar( 128 ) , 
@EntityPropsName varchar( 128 ) , 
@PhysicalName varchar( 128 ), 
@Definition varchar( 7500 ) 

declare @strSQL varchar( 8000 ), 
@iCount int 
open @CrsWork 
fetch next from @CrsWork into @LogicalName, @EntityName, @EntityPropsName, @PhysicalName, @Definition 
 -- insert into testdb..TT (Name) values(%af_src_str_6) 
 
while @@fetch_status= 0  
begin 
if (@Definition IS NULL or RTrim(@Definition)='') 
set @Definition=@LogicalName 


set @iCount=(select count(*) from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', @EntityName, 'column', @PhysicalName) xp where xp.name in ('MS_Description') ) 
if (@ICount> 0 ) 
set @strSQL='EXECUTE sp_updateextendedproperty N''MS_Description'', N'''+@Definition+''' , N''user'', N''dbo'', N''table'', N'''+@EntityName+''', N''column'', N'''+@PhysicalName+'''' 
else 
set @strSQL='EXECUTE sp_addextendedproperty N''MS_Description'', N'''+@Definition+''' , N''user'', N''dbo'', N''table'', N'''+@EntityName+''', N''column'', N'''+@PhysicalName+'''' 
if (Object_ID(@EntityName) IS NOT NULL) 
begin 
set @iCount=(select count(*) from syscolumns where id=Object_ID(@EntityName) and [name] in(@PhysicalName)) 
if @iCount> 0  
begin 
 --insert into testdb..TT (Name) values(@strSQL) 
 
exec (@strSQL) 
end 
 -- else 
 
 -- insert into testdb..TErr (strSQL) values(%af_src_str_53+@EntityName+%af_src_str_54+%af_src_str_55+@PhysicalName) 
 
end 
 -- else 
 
 -- insert into testdb..TErr (strSQL) values(%af_src_str_56+@EntityName+%af_src_str_57+%af_src_str_58+@PhysicalName) 
 

 -- EXECUTE sp_addextendedproperty N%af_src_str_59, @Definition , N%af_src_str_60, N%af_src_str_61, N%af_src_str_62, @EntityName, N%af_src_str_63, @PhysicalName 
 
fetch next from @CrsWork into @LogicalName, @EntityName, @EntityPropsName, @PhysicalName, @Definition 
end 

close @CrsWork 
deallocate @CrsWork 

SELECT * 
FROM OPENXML (@idoc, '/ERwin4/Model/Entity_Groups/Entity/Attribute_Groups/Attribute/AttributeProps/Physical_Name') 
with(LogicalName varchar( 128 ) '../../@Name' , 
EntityName varchar( 128 ) '../../../../@Name', 
EntityPropsName varchar( 128 ) '../../../../EntityProps/Name', 
PhysicalName varchar( 128 ) '../Physical_Name', 
Definition varchar( 7500 ) '../Definition') 

EXEC sp_xml_removedocument @idoc 
GO 

...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как в ErWin перенести в базу комментарии к полям?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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