![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить список всех баз данных [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