Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi и MS SQL Server, Как узнать имена серверов? 
:(
    Опции темы
nova5
  Дата 10.5.2004, 23:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











У меня есть форма, на ней ADOConnection и всё остальное. Подскажите пожалуйста, как узнать именя всех серверов, к которым можно приконектиться.
  Вверх
x77
Дата 10.5.2004, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



никак, по определению. как узнать имена всех компьютеров в интернет? а ведь если них стоит mssql-сервак, к ним ко всем можно подконнектиться (утрирую, конечно, но смысл такой).

узнать можно, например, все зарегестрированные ODBC-источники и отобрать из них все mssql-евские. (Session.GetAliasNames); узнать можно все алиасы, прописанные Microsoft SQL Server\Network Client Utility (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo).

и т.д.

конкретизируйте задачу.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
nova5
Дата 11.5.2004, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.5.2004
Где: Krasnodar

Репутация: нет
Всего: нет



to x77
У меня есть база работающая у меня дома, на моём локальном серваке. Нужно сделать так, чтобы не приходилось каждый раз лезть в исходники и править connection string, когда меняешь место её работы, т.е. ставишь на другие серваки (тоже локальные). Условие: база на всех серваках существует.
PM MAIL   Вверх
x77
Дата 11.5.2004, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



nova5, если подключение не удалось: выводи стандартный диалог с предложением ввести путь к базе, и подключайся снова.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
nova5
Дата 11.5.2004, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.5.2004
Где: Krasnodar

Репутация: нет
Всего: нет



x77, ну это можно сделать, но хотелось бы автоматизировать процесс и, например, в ComboBox'е выводить все серваки, пусть выбирают и коннектяться. Вот в чём вопрос, как такое сделать!?
PM MAIL   Вверх
Петрович
Дата 12.5.2004, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Можно легко получить список доступных в ЛОКАЛЬНОЙ сети MS-SQL серверов.
См. функцию NetServerEnum но она только под WinNT,Win2000,WinXP. Если под Win9x, то надо сначала получить список компьютеров в сети с помощью WNetOpenEnum,WNetEnumResource,WNetCloseEnum. А затем для каждого дернуть NetServerGetInfo дабы узнать, работает-ли на нем MS-SQL-сервер.
Если надо подробнее, могу выложить код, по крайней мере под WinNT.



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
nova5
Дата 12.5.2004, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 10.5.2004
Где: Krasnodar

Репутация: нет
Всего: нет



Петрович , очень хотелось бы посмотреть код, хотя бы под NT. Заранее спасибо.

PM MAIL   Вверх
Петрович
Дата 5.7.2004, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 25
Всего: 55



Цитата
Петрович , очень хотелось бы посмотреть код, хотя бы под NT. Заранее спасибо.

Сори, забыл включить подписку на тему.
Вот, может уже и не нужно, но выкладываю:
Код

procedure NetEnumServers(aList :tStrings; ServersType :Cardinal =SV_TYPE_ALL);
// Заполняет aList списком серверов обнаруженных в сети, соответствующего типа.
// Только под WinNT.
// Ex: EWNetError
var
 pBuf :Pointer;
 Count, TotalEntries, ResumeHandle :Cardinal;
 Res :NET_API_STATUS;
 pEntry :PServerInfo101;
begin
 { TODO : Для Win9x наверное надо NetGetListComputers(aList) и далее NetServerGetInfo }
 pBuf := nil;
 ResumeHandle := 0;
 aList.BeginUpdate;
 aList.Clear;
 try
   Res := NetServerEnum (Nil
                   ,101,pBuf,MAX_PREFERRED_LENGTH
                   ,Count,TotalEntries
                   ,ServersType
                   ,nil,@ResumeHandle);
   if  not (Res in [NERR_Success,ERROR_MORE_DATA])  then
     raise EWNetErrorCreate(Res, 'Error NetServerEnum');

   if  pBuf <> nil  then begin
     pEntry := pBuf;
     while  Count > 0  do begin
       with  pEntry^  do
         aList.Add(sv101_name
//             +', Platform: ' +ServerPlatformIdToStr(sv101_platform_id)
//                             +' v'+IntToStr(sv101_version_major)+'.'+IntToStr(sv101_version_minor)
//             +', Type:'      +ServerTypeToStr(sv101_type)
//             +', Comment:'   +q2(sv101_comment)
            );
       Inc(pEntry);
       Dec(Count);
     end; //while

//      if  Res = ERROR_MORE_DATA  then
//        Log('More entries available!!!|Total entries: '+IntToStr(TotalEntries));
   end; //if  pBuf <> nil  

 finally
   aList.EndUpdate;
   if pBuf <> nil  then  NetApiBufferFree(pBuf);
 end;
end;


Закомментированны строки использованные при отладке.
Соответственно, получение списка именно MS-SQL-серверов будет выглядеть так:
Код
procedure NetGetListSQLServers  (aList :tStrings);
begin
 NetEnumServers(aList,SV_TYPE_SQLSERVER);
end;


Если будет интересно, могу и под Win9x выложить.


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
uranpro
Дата 25.7.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

Репутация: нет
Всего: 1



Петрович, не могу разобраться((( delphi дает ошибки !( 
Код

[Error] Unit1.pas(25): Undeclared identifier: 'SV_TYPE_ALL'
[Error] Unit1.pas(32): Undeclared identifier: 'NET_API_STATUS'
[Error] Unit1.pas(33): Undeclared identifier: 'PServerInfo101'
[Error] Unit1.pas(41): Undeclared identifier: 'NetServerEnum'
[Error] Unit1.pas(42): Undeclared identifier: 'MAX_PREFERRED_LENGTH'
[Error] Unit1.pas(46): Undeclared identifier: 'NERR_Success'
[Error] Unit1.pas(47): Undeclared identifier: 'EWNetErrorCreate'
[Error] Unit1.pas(51): Pointer type required
[Error] Unit1.pas(52): Undeclared identifier: 'sv101_name'
[Error] Unit1.pas(66): Undeclared identifier: 'NetApiBufferFree'


Добавлено через 1 минуту и 2 секунды
 smile 


--------------------
I want a perfect soul
PM MAIL ICQ   Вверх
Akella
Дата 26.7.2008, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



uranpro, посмотри на дату этой темы smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.