powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Все вопросы по Sybase PowerDesigner (PD), Часть № 4
25 сообщений из 208, страница 4 из 9
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36003842
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov
разбивают пакет на составляющие, после чего теряется его первоначальный
вид. Лучше бы хранили одним куском текста, как процедуры.

Денис, так ли он важен этот первоначальный вид? Что в первоначальном виде ценно, порядок процедур и типов? По-моему, тут PD поощряет к лучшей организации кода, к тому же легче типы и процедуры таскать между ora-пакетами.
А "одним кусом" и так можно пихнуть в Initialization. Можно и шаблоны подкрутить если есть необходимость.
...Просто сложновато мне представить пример, где первоначальный вид ora-пакета очень важно сохранить, т.к. в последнее время я на mssql "сижу".
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36003848
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник wrote at 24.05.2009 12:18:

> Денис, так ли он важен этот первоначальный вид? Что в первоначальном
> виде ценно, порядок процедур и типов? По-моему, тут PD поощряет к лучшей
> организации кода, к тому же легче типы и процедуры таскать между
> ora-пакетами.

Например, мне охота сохранить комментарии к процедурам спецификации пакета. В теле еще можно
впихнуть их в сами процедуры, в спецификации не получится.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36004648
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov
Например, мне охота сохранить комментарии к процедурам спецификации пакета. В теле еще можно
впихнуть их в сами процедуры, в спецификации не получится.

Тут, видимо, единственный способ - собирать source пакетов c комментариями через vbs.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36006676
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заранее извиняюсь, если подобный вопрос уже задавался, просто я его пока не нашел

Делаю следующие шаги
1) в PD создаю таблицу Table1, в ней колонку created, в ней значение по умолчанию getdate()
2) генерирую полученную таблицу в базу - сгенерированный скрипт:

create table Table1 (created datetime null default getdate())
go

при этом в базе создается ограничение: "DF__Table1__created__4A8310C6" , которое не отображается в PD и при каждом последующем апдейте базы из модели PD упрямо указывает на то, что не должно быть такого ограничения, но при перезоздании таблицы вновь сгенерированным скриптом MSSQL естественно создает опять ограничение, только оканчиваться оно будет другими символами, например: DF__Table1__created__503BEA1C .

И хрен бы сним, но если проделать апдейт модели из базы, то ограничение уже появится в PD.

И вот тут возникает проблема, в следующий раз при апдейте базы из модели, пересоздавая таблицу(например при вешании Primary key на тот же столбец created) уже будет сгенерирован скрипт

create table dbo.Table1 (created datetime not null constraint DF__Table1__created__503BEA1C default getdate(), constraint PK_TABLE1 primary key (created)
)
on "PRIMARY"
go

Т.е. будет создаваться ограничение уже созданное в базе!! и появляется ошибка!

У меня в базе множество таблиц и множество ограничений, как избежать подобной ошибки! Может можно как-нибудь вообще отключить в PD репликацию ограничений из базы? Только вот я пока не нашел где это сделать.

P.S. сорри за такой объемный вопрос, просто хотел как можно понятнее объяснить ситуацию
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36006789
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest
Т.е. будет создаваться ограничение уже созданное в базе!! и появляется ошибка!

В свойствах столбца created, есть закладка microsoft, там - поле default constraint name.
установите жёсткое имя констрейнта, тогда оно не будет автоматически генериться сервером. а будет браться то, которое вы задали.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007220
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникblest
Т.е. будет создаваться ограничение уже созданное в базе!! и появляется ошибка!

В свойствах столбца created, есть закладка microsoft, там - поле default constraint name.
установите жёсткое имя констрейнта, тогда оно не будет автоматически генериться сервером. а будет браться то, которое вы задали.

Понятно, что жестко там можно забить все что угодно, только это не выход из проблемы. Если назвать ограничение по умолчанию x1, то например при добавлении primary key в таблицу будет сгенерирован такой скрипт:

execute sp_rename Table1, tmp_Table1
go

create table dbo.Table1 (
created datetime not null constraint x1 default getdate(),
constraint PK_TABLE1 primary key (created)
)
on "PRIMARY"
go

Т.е. при пересоздании таблицы он будет опять же создавать ограничение с именем уже созданным!
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007330
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest
Понятно, что жестко там можно забить все что угодно, только это не выход из проблемы. Если назвать ограничение по умолчанию x1, то например при добавлении primary key в таблицу будет сгенерирован такой скрипт:

created datetime not null constraint x1 default getdate(),
constraint PK_TABLE1 primary key (created)
)
on "PRIMARY"
go

Т.е. при пересоздании таблицы он будет опять же создавать ограничение с именем уже созданным!
с каким именем уже созданным? x1 или PK_TABLE1?
Нужен alter скрипт и чтобы он учитывал при сравнении с БД, что ограничение default getdate() уже существует? Тогда следует задать в default constraint name имя, которое лежит в базе или сгенерить скрипт на удаление этого default constraint и далее придерживаться жестких наименований в констрейнтах во избежании подобных ситуаций.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007359
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникblest
Понятно, что жестко там можно забить все что угодно, только это не выход из проблемы. Если назвать ограничение по умолчанию x1, то например при добавлении primary key в таблицу будет сгенерирован такой скрипт:

created datetime not null constraint x1 default getdate(),
constraint PK_TABLE1 primary key (created)
)
on "PRIMARY"
go

Т.е. при пересоздании таблицы он будет опять же создавать ограничение с именем уже созданным!
с каким именем уже созданным? x1 или PK_TABLE1?
Нужен alter скрипт и чтобы он учитывал при сравнении с БД, что ограничение default getdate() уже существует? Тогда следует задать в default constraint name имя, которое лежит в базе или сгенерить скрипт на удаление этого default constraint и далее придерживаться жестких наименований в констрейнтах во избежании подобных ситуаций.

Жирный я выделил то, что было важно. Т.е. в модели было ограничение x1 и в базе было ограничение x1 и при пересоздании таблицы он его же создавал.

Вопрос как раз вот в том и есть: Как сгенерить скрипт на удаление этого default constraint ?
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007369
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или если быть точнее нужно вот это:
Нужен alter скрипт и чтобы он учитывал при сравнении с БД, что ограничение default getdate() уже существует!
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007502
Роман ДынникПосмотрите на CodeXChange, может там есть.
Простите, не подскажете точнее что это? Где смотреть?
Здесь? google.ru/Top/Computers/Programming/Development_Tools/Development_Environments/PowerBuilder/
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007576
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,
в TSQL нет конструкции позволяющей добавить ограничение для конкретного столбца таблицы вне определения таблицы. Т.е. нет подобного псевдо-синтаксиса:
alter table [tablename]
aleter column [columnname]
add constarint [constname] ...
Отсюда и проблемы.
Нужно удалять предыдущий столбец и создавать новый с ограничением.
Отдельно ограничение столбцу на TSQL добавить нельзя.

Любой TSQL код добавляемый при генерации можно написать на закладке Script.
Например, там могло бы быть:
alter table [tablename] drop constraint [constname]
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007616
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникblest,
в TSQL нет конструкции позволяющей добавить ограничение для конкретного столбца таблицы вне определения таблицы. Т.е. нет подобного псевдо-синтаксиса:
alter table [tablename]
aleter column [columnname]
add constarint [constname] ...
Отсюда и проблемы.
Нужно удалять предыдущий столбец и создавать новый с ограничением.
Отдельно ограничение столбцу на TSQL добавить нельзя.

Любой TSQL код добавляемый при генерации можно написать на закладке Script.
Например, там могло бы быть:
alter table [tablename] drop constraint [constname]

Ну понятно, что alter table должно присутствовать. Но вот, например, SSMS при добавлении удалении поля по умолчанию генерирует следующие скрипты:

ALTER TABLE dbo.Table1 ADD CONSTRAINT DF_Table1_created DEFAULT (getdate()) FOR created

ALTER TABLE dbo.Table1 DROP CONSTRAINT DF_Table1_created

В идеале хотелось бы, чтобы и PD генерировал такие же скрипты, а не пересоздавал таблицы вместо этого. Но впринципе можно было обойтись, чтобы он при импорте из базы во вкладку Microsoft ничего не добавлял, только я не знаю можно ли это настроить
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007624
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел КалугинРоман ДынникПосмотрите на CodeXChange, может там есть.
Простите, не подскажете точнее что это? Где смотреть?
Здесь? google.ru/Top/Computers/Programming/Development_Tools/Development_Environments/PowerBuilder/
http://www.sybase.com/developer/codexchange
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007649
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blest,
рекомендую не использовать обновление БД напрямую из PD, а использовать патчи, которые проверяются глазами и отчасти дописываются руками, а то что генерит PD при modify database можно использовать только как черновой вариант для патча. патчи складывайте куда нибудь в svn или vss или в том же PD в какие-нибудь artifacts.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007760
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникblest,
рекомендую не использовать обновление БД напрямую из PD, а использовать патчи, которые проверяются глазами и отчасти дописываются руками, а то что генерит PD при modify database можно использовать только как черновой вариант для патча. патчи складывайте куда нибудь в svn или vss или в том же PD в какие-нибудь artifacts.

Ну я впринципе понял уже, что напрямую без проверки из PD апдейтить базу неразумно. А что за пачти такие можно использовать? Я думал достаточно проверки и выполнения измененного мной скрипта, сгенерированного PD.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36007991
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestНу я впринципе понял уже, что напрямую без проверки из PD апдейтить базу неразумно. А что за пачти такие можно использовать? Я думал достаточно проверки и выполнения измененного мной скрипта, сгенерированного PD.
скрипты(патчи) необходимо систематизированно хранить.
нужно это по следующим причинам:
- если база версии XX поднимается из бекапа, а для корректной работы приложения требуется версия базы YY, то накатываются скрипты от XX до YY.
- в Unit-тестах и различных этапах Continues Integration (CI), чтобы привести базу в первоначальное состояние перед тестами, она либо поднимается из бекапа (так иногда удобней), либо создается из скрипта + патчи до версии YY.

p/s/
соответственно, для автоматизации установки патчей, база должна иметь таблицу, где хранится номер версии.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36009777
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман ДынникblestНу я впринципе понял уже, что напрямую без проверки из PD апдейтить базу неразумно. А что за пачти такие можно использовать? Я думал достаточно проверки и выполнения измененного мной скрипта, сгенерированного PD.
скрипты(патчи) необходимо систематизированно хранить.
нужно это по следующим причинам:
- если база версии XX поднимается из бекапа, а для корректной работы приложения требуется версия базы YY, то накатываются скрипты от XX до YY.
- в Unit-тестах и различных этапах Continues Integration (CI), чтобы привести базу в первоначальное состояние перед тестами, она либо поднимается из бекапа (так иногда удобней), либо создается из скрипта + патчи до версии YY.

p/s/
соответственно, для автоматизации установки патчей, база должна иметь таблицу, где хранится номер версии.

А заполнять эту таблицу вручную что ли? Так может проще генерируемые скрипты просто сохранять в отдельную папку и сортировать по дате создания? Как раз можно после восстановления бекапа накатить все скрипты, у которых дата создания больше, чем дата создания бекапа.
Вот кстати вопрос: можно ли настроить, чтобы при апдейте базы из модели значение в File Name во вкладке General автоматически генерировалось? Например было стандартное название + айдишник(или дата)
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36010011
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestА заполнять эту таблицу вручную что ли? Так может проще генерируемые скрипты просто сохранять в отдельную папку и сортировать по дате создания? Как раз можно после восстановления бекапа накатить все скрипты, у которых дата создания больше, чем дата создания
бекапа.
[/quot ]
Скрипты в БД не хранятся. В БД должен хранится только номер версии, устанавливаемый после прогона скриптов. Например, каждый скрипт последней строчкой может содержать update номер версии. С номерами как то надежней кажется чем с датами.
[quot blest]
Вот кстати вопрос: можно ли настроить, чтобы при апдейте базы из модели значение в File Name во вкладке General автоматически генерировалось? Например было стандартное название + айдишник(или дата)
template-а для File Name нет. Этого можно добиться только если вы сами будете через VBS или Interop генерить скрипт.
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36025602
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрабатываю физическую диаграмму БД для SQL Server.

Каждая таблица в базе должна содержать несколько стандартных столбцов для хранения информации о том, кто и когда изменил данные: Created_By, Creation_Date_Time и так далее.

Можно создать эти столбцы в каждой таблице вручную, но не хочется.

Можно ли каким-то образом добавить их при генерации sql-скрипта для создания БД ?
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36025608
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying Dutchman wrote at 04.06.2009 14:36:

> Каждая таблица в базе должна содержать несколько стандартных столбцов

> Можно ли каким-то образом добавить их при генерации sql-скрипта для создания БД ?

Добавь их через VbScript
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36025829
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov
Flying Dutchman wrote at 04.06.2009 14:36:

> Каждая таблица в базе должна содержать несколько стандартных столбцов

> Можно ли каким-то образом добавить их при генерации sql-скрипта для создания БД ?

Добавь их через VbScript


Если я правильно понимаю, мне нужно внести свои изменения в стандартный скрипт, который использует PowerDesigner ?
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36026017
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying Dutchman wrote at 04.06.2009 16:02:

> Если я правильно понимаю, мне нужно внести свои изменения в стандартный
> скрипт, который использует PowerDesigner ?


Нет, я имею в виду разовую или периодическую операцию через меню Tools-> Execute Commands-> Edit/Run
Script... Пишешь скрипт на добавление требуемых полей и запускаешь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36026062
Flying Dutchman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov
Flying Dutchman wrote at 04.06.2009 16:02:

> Если я правильно понимаю, мне нужно внести свои изменения в стандартный
> скрипт, который использует PowerDesigner ?


Нет, я имею в виду разовую или периодическую операцию через меню Tools-> Execute Commands-> Edit/Run
Script... Пишешь скрипт на добавление требуемых полей и запускаешь.


То есть, столбцы будут добавлены к таблицам на диаграмме ? Это не совсем то, что хотелось.
Хотя, если не удастся другим способом, то придется использовать этот.

В этом случае, можно ли настроить PowerDesigner так, чтобы в таблицах на диаграмме эти столбцы не показывались, чтобы не загромождать диаграмму ?
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36026099
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying Dutchman wrote at 04.06.2009 17:26:

> То есть, столбцы будут добавлены к таблицам на диаграмме ? Это не совсем
> то, что хотелось.
> Хотя, если не удастся другим способом, то придется использовать этот.

По-моему это самое правильное, когда поля не изменяются на лету.


> В этом случае, можно ли настроить PowerDesigner так, чтобы в таблицах на
> диаграмме эти столбцы не показывались, чтобы не загромождать диаграмму ?


В свойствах таблицы на закладке списка полей сними галку Displayed у требуемых. Имя колонки: буква
D, если его нет, то добавь его через вторую справа кнопку "Customize Columns and Filter (Ctrl+U)".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Все вопросы по Sybase PowerDesigner (PD), Часть № 4
    #36026267
Gold_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В скрипте sql необходимо добавлять перед сущностями имя схемы.
Я правильно понял, что для этого можно использовать пакеты?
Как добавить имя схемы в скрипте?
...
Рейтинг: 0 / 0
25 сообщений из 208, страница 4 из 9
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Все вопросы по Sybase PowerDesigner (PD), Часть № 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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