Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить список всех баз данных [D6, MSSQL]


Vlad2 ©   (2002-10-15 13:20:00) 

Эдравствуйте !
Как получить список всех баз данных сервера mssql2000 средствами ado в delphi6 ? Конечно, нужно использовать TADOConnection. Но не могу найти, как. Подскажите, кто знает.


Vlad2   (2002-10-16 06:27:00) [1]

Ребята, жизнь прекрасна. Спасибо.
OpenSchema(siCatalogs, ...) - то, что надо.
> sniknik : я Вам там почту послал.


sniknik   (2002-10-15 16:18:00) [2]

Best Before 2024 - сори я сначала не понял. это именно то что надо. средствами ADO (без селекта) и именно как в вопросе стояло.


sniknik   (2002-10-15 16:09:00) [3]

ну и что?
ADOConnection1.OpenSchema(siColumns, VarArrayOf([Unassigned, Unassigned, SelectedTable, Unassigned]), EmptyParam, FieldSchema);
информация о полях таблици.
предлагалось проверить
siDBInfoKeywords
siDBInfoLiterals
а возможных схем гораздо больше. практически информация обо "всем". так что пусть работает.


Best Before 2024   (2002-10-15 15:58:00) [4]

ADOConnection1.OpenSchema(siCatalogs, EmptyParam, EmptyParam, ADODataSet1);
while not ADODataSet1.Eof do
begin
DBName := ADODataSet1["CATALOG_NAME"];
ADODataSet1.Next;
end;

Но это все тот же список БД


sniknik   (2002-10-15 15:22:00) [5]

договорились. можеш и на почту сдублировать если не в лом. :-))


Vlad2   (2002-10-15 15:18:00) [6]

> sniknik
Если сегодня не успею (рабочий день у нас закончился), то завтра в этой же ветке.


sniknik   (2002-10-15 15:11:00) [7]

напиши как разберешся. пригодится. (может быть)


Vlad2   (2002-10-15 15:08:00) [8]

> SergSuper (15.10.02 14:52)
Я проверил: запретил выполнение sp_helpdb и соединился с сервером.

> sniknik
OpenSchema(); ? Кажется путь здесь. Спасибо.


sniknik   (2002-10-15 14:57:00) [9]

Vlad2 (15.10.02 14:33) - но подозреваю,...
скорее всего правильно подозреваеш
смотри получение схем
ADOConnection1.OpenSchema();
у него есть параметры вызова
siDBInfoKeywords
siDBInfoLiterals
может это то и есть. но разбиратся тебе самому придется этого я не использовал, (ограничивался данными о полях без открытия датасета).
SergSuper (15.10.02 14:52) естественно если у ADO нет доступа ничего не выйдет.


SergSuper   (2002-10-15 14:52:00) [10]

Вдогон
по умолчанию sp_helpdb разрешена на выполнение для роли public, но не все администраторы одинаково полезны. Пользователь всё равно не получит доступа (лояльным способом) к запрещенным объектам, но нужно видеть какой-то список на клиенте.

Дык тогда и АДО не получит доступа :) Откуда ж Вы думаете она узнаёт список баз?


Vlad2   (2002-10-15 14:33:00) [11]

> Best Before 2024
Вы правы, просто я хочу предусмотреть, по возможности, все обстоятельства. Конечно, sp_helpdb использовать придется, но подозреваю, что список баз данных можно достать из TADOConnection.


Best Before 2024   (2002-10-15 14:26:00) [12]

А если диск отформатируют - тоже работать должно.
Программа должна выставлять некие требования и заставлять пользователей их соблюдать.


Vlad2   (2002-10-15 14:22:00) [13]

> Best Before 2024 (15.10.02 14:15)
Ну, сбросил флажок "EXEC" для ServerName.master.sp_helpdb и с других по своему усмотрению.


Vlad2   (2002-10-15 14:18:00) [14]

> SergSuper
Грустно. Получается, что можно узнать только БД по умолчанию.


Best Before 2024   (2002-10-15 14:15:00) [15]

>>Это так, а как быть, если использовать sp сервера нельзя?
Кто запретил?!


SergSuper   (2002-10-15 14:09:00) [16]

select * from master..sysdatabases ?

Мне кажется стандартными методами узнать не получится. Даже если это есть в АДО, не факт что реализовано в VCL


Vlad2   (2002-10-15 14:06:00) [17]

Вдогонку:
по умолчанию sp_helpdb разрешена на выполнение для роли public, но не все администраторы одинаково полезны. Пользователь всё равно не получит доступа (лояльным способом) к запрещенным объектам, но нужно видеть какой-то список на клиенте.


Vlad2   (2002-10-15 13:44:00) [18]

> Best Before 2024
Это так, а как быть, если использовать sp сервера нельзя ?
Соединение с сервером проходит даже если в строке connectionString не указывать имя БД, - для данного UserName значение устанавливается в соответствии с настройками. Список баз, кажется, нужно искать в adoConnection, но вот в adoConnection.Properties и свойств таких нет.


Best Before 2024   (2002-10-15 13:33:00) [19]

Stored Procedure sp_helpdb
exec sp_helpdb


Наверх

Титульная страница Поиск, карта сайта Написать письмо