Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ODBC Reverse Engineering: Unable to list the domains / 12 сообщений из 12, страница 1 из 1
08.01.2006, 19:39
    #33471992
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Доброго времени суток.

PowerDesigner: 10.0 (лицензионный), 10.1, 11.1 - триал
DBMS: Sybase ASE 12.5.1 | 12.5.3 (лицензионные)

Действие: реинжениринг PDM по текущему состоянию БД для последующей синхронизации с текущей версией PDM-модели.

Описание проблемы:

1) File | Reverse Engineer | Database...
2) New Phisical Data Model: DBMS Sybase AS Enterprise 12.5.1 & Copy the DBMS Definition in model
3) Using ODBS data source (with admin`s permissions)
4) ODBC Reverse Engineering. При выборе вкладки Domains порождается исключение 22003 (Unable to list the domains. DataDirect.ODBC Write Protocol driver.SQL Server: Arithmetic overflow occured).

Таким образом, попытка реконструировать домены при реинжиниринге через прямое ODBC соединение не удается, поэтому приходится выполнять реинжениринг двух PDM моделей: с использованием DDL-скрипта, порождаемого Sybase Central и через ODBC соединение. Затем объединять модели и только после этого синхронизировать модель с БД.

Вопрос:
~~~~~
Сталкивался ли кто-нибудь с описаной проблемой, удалось ли ее победить? Если удалось, то какими средствами.

Спасибо.
...
Рейтинг: 0 / 0
09.01.2006, 13:28
    #33472551
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
maxlongint wrote:

> Сталкивался ли кто-нибудь с описаной проблемой, удалось ли ее победить?
> Если удалось, то какими средствами.

1. Попробуй взять другой ODBC-драйвер, если есть такая возможность. "ODBC Write Protocol driver" -
драйвер прямого подключения к БД, без клиента?
2. Попробуй посмотреть, какой именно SQL-запрос выполняет PowerDesigner для получения сиска доменов.
Может быть проблема в нем и можно его изменить.

Но, к сожалению, это все лишь предположения.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
09.01.2006, 18:19
    #33472868
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Денис, вы подразумеваете какой-нибудь сторонний драйвер?
У меня Sybase ODBC Driver 4.20.00.67 (c дистрибутива ASE)
...
Рейтинг: 0 / 0
09.01.2006, 18:38
    #33472888
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
maxlongint wrote:
> Денис, вы подразумеваете какой-нибудь сторонний драйвер?
> У меня Sybase ODBC Driver 4.20.00.67 (c дистрибутива ASE)

Может быть. Или вот с PowerDesigner 12 beta идет DataDirect ODBC50, там есть такой PB DATADIRECT OEM
5.00 Sybase Wire Protocol. Повторюсь, это всего лишь догадки, к сожалению, ASE нет под рукой.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
11.01.2006, 12:06
    #33476123
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Удалил предыдущую установку PowerDesigner и очистил реестр (Fix-It Utilities + Norton System Works). Установил PowerDesigner 12.0 Beta 2. Создал DSN к базе для драйверов PB Data Direct OEM Sybase Wire Protocol версии 4.20.00.30. Используя этот DSN попытался выполнить реверсинжениринг базы данных. Домены не распознаются.

Для чистоты эксперимента установил "с нуля" Windows XP SP2, Sybase ASE 12.5.3, Open Client (спасибо автору статьи о клонировании ОС Windows 2000/2003/XP с предустановленными приложениями, отдельные many thanks Norton GHost и Петру Нортону). Со скрипта создал целевую базу данных. Проверил разные "мелочи" (объем кэша, объем стека хп, размещение данных и лог`ов на разных device, us_english и cp1251 и т.п.). На всякий случай преувеличил объемы всякой памяти для внутренних нужд Sybase. Постучал в бубен и повторил реверсинжениринг. Домены не распознаются.

Создал MyFavoriteDatabase с одним доменом и одной таблицей, содержащей единственный столбец MyFavoriteColumn int not null. Бубен не трогал, но вспомнил Lord of The Dance... Повторил реверсинжениринг. Домены не распознаются.

Вероятнее всего, фирменные PDF-файлы документации на Sybase PowerDesigner прочтены мною либо недостаточное количество раз, либо недостаточно осмыслены - по строгому определению, ошибка - есть несоответствие порядка выполняемых действий (как разработчиком, так и пользователем) порядку выполнения действий для достижения цели, указанному в руководстве. Тем более, что руководства написаны на не терпящем двузначности английском языке.

"...какой именно SQL-запрос выполняет PowerDesigner для получения сиска доменов". Честно говоря, не вникал, но точно из syiq125.xdb. Файл не изменялся, т.е. используется as is.

Сорри за некоторые отступления, досадно за нераспознаваемую мной собственную ошибку и, вследствие несколько удлиненный путь синхронизации изменений.
...
Рейтинг: 0 / 0
11.01.2006, 12:14
    #33476144
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Сорри, очепятка: вместо syiq125.xdb следует читать "syase1251.xdb, syase1253.xdb, в зависимости от текущей DBMS"
...
Рейтинг: 0 / 0
11.01.2006, 13:50
    #33476450
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Внушает:) Попробуй стукнуться на форум Sybase по PowerDesigner, может там есть нечто подобное:
http://forums.sybase.com/cgi-bin/webnews.cgi?cmd=listitems&group=sybase%2Epublic%2Epowerdesigner%2Egeneral

В конце концов может техподдержка что подскажет.
...
Рейтинг: 0 / 0
11.01.2006, 17:06
    #33477143
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Действия:

1) Освежить разговорный english чтением пейджера forums.sybase.com ;)
2) Запастись "наркотиками" (копченое сало, сленг), освежить нативный разговорный - может пригодиться при работе с пейджером....
3) Колдонуть VBS и насладиться картиной слияния архивной и "композитной" PDM моделей.
4) ОписАть заклинания step by step (с иллюстрациями Марайя) для успешной синхронизации PDM модели с физической БД в случае нестандартного поведения PowerDesigner. Есть ньюансы при слиянии модели, восстановленой по DDL скрипту от Sybase Central, с моделью, восстановленой через ODBC соединение. Опубликовать в текущем топике.
5) Извлечь и опубликовать причину нестандартного поведения PD. Опубликовать в текущем топике.
6) take a many-many-many cups of coffee and relax..... ;)
...
Рейтинг: 0 / 0
27.01.2006, 12:39
    #33507176
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Возможно, есть описанное в документации ограничение на тип данных и его длину для домена, но я в документации PD 10, 11, 12 его не обнаружил.

Для наблюдения эффекта достаточно добавить либо MyFrstUglyDomain либо MyScndUglyDomain.

Срабатывает для Power Designer 10.x, 11.x, 12 Beta2.
Версия используемого для подключения драйвера ODBC влияния не оказывает.

Иллюстрация:
Код: 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.
/* ************************************************************** */
/* После выполнения скрипта, находясь в Power Designer,           */
/* выполните реверс-инжениринг PDM через прямое ODBC подключение  */
/* к БД MyDatabase.                                               */
/* При выборе доменов на вкладке Domains                          */
/* наблюдается исключение 2203.                                   */
/* ************************************************************** */

/*================================================================*/
/* Database name:  MyDatabase                                     */
/* DBMS name:      Sybase AS Enterprise 12.5.2                    */
/* Created on:     27.01.2006 11:06:55                            */
/*================================================================*/


use master
go

if exists( select  1  from master.dbo.sysdatabases 
                    where name = 'MyDatabase')
   drop database MyDatabase
go

/*==============================================================*/
/* Database: MyDatabase                                         */
/* замениете data_00, log_00 на соответствующие используемые    */
/* Вами устройства                                              */
/*==============================================================*/
create database MyDatabase
on data_00= 10 
log on log_00= 10 
go

use MyDatabase
go

/* ********************************************************************* */
/*                                                                       */
/* Cледующие домены при реинжениринге БД через прямое ODBC подключение   */
/* вызывают исключение 2203 (Arithmetic overflow),  независимо от        */
/* версии драйверов ODBC - PB DataDirect OEM 5.00 Sybase Wire Protocol,  */
/* PB DataDirect OEM 4.20 Sybase Wire Protocol - и версии Power Designer */
/*                                                                       */
/* ********************************************************************* */

/*==============================================================*/
/* Domain: MyFrstUglyDomain                                     */
/*==============================================================*/
execute sp_addtype MyFrstUglyDomain, 'varbinary(256)', 'null'
go

/*==============================================================*/
/* Domain: MyScndUglyDomain                                     */
/*==============================================================*/
execute sp_addtype MyScndUglyDomain, 'varchar(256)', 'null'
go
...
Рейтинг: 0 / 0
27.01.2006, 13:00
    #33507254
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Домены с типами данных varbinary и varchar длиной меньше 256 - проблем не вызывают, так же, как и другие, не упомянутые здесь, стандартные типы данных.
...
Рейтинг: 0 / 0
29.01.2006, 12:14
    #33509298
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Трассировка скриптов ASE12.5.2::Script\Objects\Domain\SqlAttrQuery и ASE12.5.2::Script\Objects\Domain\SqlListQuery
(Tools|Resources|DBMS… --> ASE 12.5.2 --> DBMS Properties --> Script\Objects\Domain\SqlAttrQuery и Script\Objects\Domain\SqlListQuery) позволяет увидеть исключение при выполнении select –
Arithmetic overflow during implicit conversion of INT value '512' to a TINYINT field .

В скриптах
ASE12.5.2::Script\Objects\Domain\SqlAttrQuery
ASE12.5.2::Script\Objects\Domain\SqlListQuery

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select distinct
   u.name,
   i.name,
   isnull(u.prec,u.length),
   u.scale,
   convert(char( 20 ), isnull(u.tdefault,  0 )),
   convert(char( 20 ), isnull(u.domain,  0 ))
from

строку
Код: plaintext
isnull(u.prec,u.length),
заменил на
Код: plaintext
u.length,

С использование драйверов PB DataDirect 4.0, 4.20, 5.0 в Power Designer версий 10.0, 10.1, 11.1 и 12 Beta2 при реинжениринге с использованием непосредственного подключения через ODBC - проблем не возникает.

Побочных эффектов пока не обнаружил. Пока не обнаружено...

Denis Popov. 9 янв 06, 13:28. Попробуй посмотреть, какой именно SQL-запрос выполняет PowerDesigner для получения сиска доменов. Может быть проблема в нем и можно его изменить.

Many thanks, Денис.

Теперь можна рилакснуть )))
...
Рейтинг: 0 / 0
29.01.2006, 12:18
    #33509300
maxlongint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ODBC Reverse Engineering: Unable to list the domains
Arithmetic overflow during implicit conversion of INT value '512' to a TINYINT field - для домена с типом данных varbinary(256). Аналогично для домена с типом данных varchar(1024). т.е. "длина" данных > 255
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ODBC Reverse Engineering: Unable to list the domains / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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