Как определить владельца таблицы?
От: VitaliyDoroshko  
Дата: 03.11.05 18:07
Оценка:
В состав CBuilder и (Delphi) входит программа SQL-explorer. Как только она запускается, она показывает список ODBC — источников. Далее, когда я открываю некоторыый источник (базу данных), программа показывает мне список таблиц, которые содержит база данных.

Нужно сделать тоже самое.
Следующий код возвращает список таблиц базы:

TStrings *SL = new TStringList;
ADOConnection1->GetTableNames(SL, false);
ShowMessage(SL->Text);

Выдаеся список вида:
#temp
accounts
Akt
AmortList
AmortList
...

Однако, кроме имени таблица еще имет и владельца.
Мне приходится работать с базой Sybase. Там при обращении к таблице владельца указывать обязательно:
Select * From dba.Akt

Подскажите как определить владельца таблицы?
Re: Как определить владельца таблицы?
От: Hemul  
Дата: 04.11.05 11:06
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Подскажите как определить владельца таблицы?


С клиента вроде никак. Вот вариант для MSSQL:

select USER_NAME( uid ) from sysobjects where name = @tablename
Re: Как определить владельца таблицы?
От: _spin_ Россия  
Дата: 04.11.05 11:44
Оценка: -1
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Подскажите как определить владельца таблицы?


А нельзя просто заменить владельцев всех объектов на dbo и не мучаться? На собственном опыте могу сказать: если нет острой необходимости — надо везде ставить dbo ибо нефиг.

С другой стороны, QA от MSSQL показывает владельцев, значит возможность их получения на клиенте есть.

Один из способов на клиенте для MSSQL — sp_help, которая возвращает 4 рекордсета, в первом из которых описывается владелец объекта.
... <<Звери — Молнии>>
Не восхрапи на работе, ибо храпом своим разбудишь начальника своего.
Re[2]: Как определить владельца таблицы?
От: Hemul  
Дата: 04.11.05 11:59
Оценка:
Здравствуйте, _spin_, Вы писали:

__>Здравствуйте, VitaliyDoroshko, Вы писали:


VD>>Подскажите как определить владельца таблицы?


__>А нельзя просто заменить владельцев всех объектов на dbo и не мучаться? На собственном опыте могу сказать: если нет острой необходимости — надо везде ставить dbo ибо нефиг.


__>С другой стороны, QA от MSSQL показывает владельцев, значит возможность их получения на клиенте есть.


__>Один из способов на клиенте для MSSQL — sp_help, которая возвращает 4 рекордсета, в первом из которых описывается владелец объекта.



В sp_help имя таблицы с овнером передавать надо. Если owner <> 'dbo' она проругается.


select USER_NAME( uid ) from sysobjects where name = 'имятаблички'

и будет вам счастье
Re[3]: Как определить владельца таблицы?
От: _spin_ Россия  
Дата: 04.11.05 12:12
Оценка:
Здравствуйте, Hemul, Вы писали:

H>В sp_help имя таблицы с овнером передавать надо. Если owner <> 'dbo' она проругается.

H>select USER_NAME( uid ) from sysobjects where name = 'имятаблички'
H>и будет вам счастье

У меня оба метода работают под MSSQL. И Ваш и мой:
sp_help 'sysobjects'
или
sp_help sysobjects


Может, под sybase что-то не так?
... <<Apocalyptica — Enter Sandman>>
Не восхрапи на работе, ибо храпом своим разбудишь начальника своего.
Re[4]: Как определить владельца таблицы?
От: Hemul  
Дата: 04.11.05 12:18
Оценка:
Здравствуйте, _spin_, Вы писали:

__>У меня оба метода работают под MSSQL. И Ваш и мой:

__>
__>sp_help 'sysobjects'
__>или
__>sp_help sysobjects
__>


__>Может, под sybase что-то не так?



Читаем:
H>>Если owner <> 'dbo' она проругается

Выполняем:
select USER_NAME( uid ) from sysobjects where name = 'sysobjects'


Вопросы?
Re: Как определить владельца таблицы?
От: VitaliyDoroshko  
Дата: 05.11.05 03:54
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:
VD>...
VD>Подскажите как определить владельца таблицы?

Если бы я работал только с MS SQL ...
Проблема заключается и в том, что приходится работать с разными бозами данных в том числе MS SQL, Sybase, Dbf, Access и др.
Более того я не использцю BDE. Пользуюсь только ADO.

Может кто подскажет какие-либо способы определить владельца таблицы с помощью ADO.
Re[2]: Как определить владельца таблицы?
От: Hemul  
Дата: 05.11.05 10:29
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Здравствуйте, VitaliyDoroshko, Вы писали:

VD>>...
VD>>Подскажите как определить владельца таблицы?

VD>Если бы я работал только с MS SQL ...

VD>Проблема заключается и в том, что приходится работать с разными бозами данных в том числе MS SQL, Sybase, Dbf, Access и др.

Универсальнго способа нет. А откуда в DBF и Access владельцы?

VD>Более того я не использцю BDE. Пользуюсь только ADO.


VD>Может кто подскажет какие-либо способы определить владельца таблицы с помощью ADO.


Вот запрос, который возвращает тоблицы с владельцами для MSSQL (для Sybase вроде также)

select user_name( uid )+'.'+ name
from sysobjects
where xtype = 'U'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.