![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!
Необходимо получить и вывести список доступных в локальной сети серверов MS SQL. В самом Delphi это реализовано!! Если в adoconnection.connectionstring выбрать пункт microsoft ole db provider for sql server, диалоговое окно попросит ввести или выбрать имя сервера (причем если в сети есть запущенные sql серверы, то они будут представлены в выпадающем списке) Как это сделать самому?? В интернете есть информация про следующие варианты .NET 2.0: SqlDataSourceEnumerator SMO - SmoApplication.EnumAvailableSqlServers(False) SQLDMO (COM Interop) - ListAvailableSQLServers ODBC - SQLBrowseConnect NetBios DbLibrary, реестр Windows Но не один из этих вариантов нигде подробно не описан! Пожалуйста помогите разобраться! |
|
#2
|
||||
|
||||
|
Код:
procedure GetServerList(Strings: TStrings);
var
dmo:OleVariant;
i:Integer;
begin
Strings.Clear;
try
dmo:=CreateOleObject('SQLDMO.SQLServer');
dmo:=dmo.Application;
dmo:=dmo.ListAvailableSQLServers;
for i:=1 to dmo.Count do
if (Length(trim(dmo.Item(i))) > 0) and (CompareText(dmo.Item(i),'(LOCAL)')<>0) then
Strings.Add(AnsiUpperCase(dmo.Item(i)));
except
end;
end;Как видно из кода, локальный сервер (т.е. установленный на машине с которой идет запрос) в список не выводится. И еще, в 2005 MS SQL DMO вроде как упразднили, поэтому код работать не будет ![]() |
|
#3
|
|||
|
|||
|
У меня сервер 2008 и DMO не работает.
Delphi долго удивляется что это за OLE-объект и выдает ошибку! |