Apr
23

Ошибка SQLSTATE = 37000 в PowerDesigner

При реверсивном инжиниринге баз данных SQL Server 2008 в Sybase PowerDesigner 15 иногда возникает ошибка “Unable to list the tables.  [Microsoft][ODBC SQL Server Driver][SQL Server][Statement(s) could not be prepared. SQLSTATE = 37000]“

sqlstate1

Для устранения этой ошибки необходимо зайти в Tools – Resources – DBMS – Microsoft SQL Server 2008 – Script – Objects – Table – SqlListQuery и SQL-запросе в поле “Value:” заключить поля u.name и o.name в функции fn_listextendedproperty в тройные апострофы:

{OWNER, TABLE, TABLE_TYPE, COMMENT}

select
u.name,
o.name,
case (o.type) when 'S' then 'SYSTEM TABLE' else 'TABLE' end,
(select convert(varchar(8000), value) from ::fn_listextendedproperty(NULL, 'user', '''u.name''', 'table', '''o.name''', null, null) where name = 'MS_Description') as coln
from
[%CATALOG%.]sys.sysobjects o
join [%CATALOG%.]sys.schemas  u on (u.schema_id = o.uid)
where
o.type in ('U', 'S')
[  and u.name = %.q:OWNER%]
order by 1, 2

Аналогичные действия нужно сделать для объекта Column. Для объекта Column обрамить тройными апострофами нужно уже три параметра – u.name, o.name и c.name.

Post comment