Форум: "Базы";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
ВнизSQL Server Найти похожие ветки
← →
devol (2003-02-05 16:08) [0]Помогите с таким вот вопросиком:
Как можно получить список доступных SQL серверов, и для каждого выбранного сервера список баз данных?
← →
jocko (2003-02-05 16:14) [1]HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\ConnectTo
← →
Reindeer Moss Eater (2003-02-05 16:14) [2]Полистай архив форума. Там есть любопытные мысли на сей счет.
← →
devol (2003-02-05 16:18) [3]Да, но в этой ветке есть только сервера, к которым уже есть подключение через ихнии клиенты. К примеру у меня есть возможность подключиться к 3 серверам на разных машинах, но в этой ветке реестра прописан только один сервер, клиент которого установлен у меня на машине.
А мне надо список всех доступных серверов.
← →
Reindeer Moss Eater (2003-02-05 16:26) [4]Вот почитай внимательно:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1043072138&n=1
← →
jocko (2003-02-05 16:28) [5]тебе поможет Client Network Utility из состав пакета MS SQL
а на счет структуры почитай интересно...
http://www.olap.ru/desc/microsoft/borland_ado.asp
а еще просто через ADOConnection.OpenSchema кажется можно, но понадобится описалово, поищи в окрестности той же ссылки.
← →
Reindeer Moss Eater (2003-02-05 16:30) [6]Если кратко и по делу, то нельзя получить список всех доступных серверов.
← →
Alex-A (2003-02-06 07:47) [7]Используя SQLDMO
procedure GetServerList(Strings: TStrings);
var dmo:OleVariant;
i:Integer;
begin
// Очистка списка серверов
Strings.Clear;
try
// Создание объекта SQL-DMO
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;
Ну а список баз данных - подключайся к каждому серверу и sp_databases
← →
Reindeer Moss Eater (2003-02-06 08:33) [8]Пример, приведенный Alex-A, не строит список доступных SQL серверов
← →
Rashpil (2003-02-20 14:37) [9]procedure GetServerNames(ServerList: TStrings);
var
res: DWORD;
x: pSIArr;
xsize: Cardinal;
readcnt, allcnt: DWORD;
NetServerEnum: TNetServerEnum;
hNetApi32: THandle;
i: Integer;
begin
hNetApi32 := LoadLibrary("netapi32.dll");
if hNetApi32 = 0 then
begin
raise EInvalidImage.CreateFmt("Unable to load netapi32.dll", []);
Exit;
end;
xsize := SizeOf(TServerInfo100) * 128;
@NetServerEnum := GetProcAddress(hNetApi32, "NetServerEnum");
if @NetServerEnum = nil then
begin
if hNetApi32 <> 0 then
FreeLibrary(hNetApi32);
Exit;
end;
res := NetServerEnum(nil, 100, @x, xsize,
@readcnt, @allcnt, $00000004, nil, 0);
if res = 0 then
begin
with ServerList do
begin
BeginUpdate;
Clear;
for i := 0 to readcnt - 1 do
Add(WideCharToString(x^[i].sv100_name));
EndUpdate;
end;
end;
if hNetApi32 <> 0 then
FreeLibrary(hNetApi32);
end;
← →
Reindeer Moss Eater (2003-02-20 14:39) [10]И этот пример не строит список доступных SQL серверов
← →
Rashpil (2003-02-20 14:49) [11]Извините, что без комментариев, но там помоему и так все ясно.
Есстественно будет работать только на NT, W2K или XP.
Для Win98 или WinME получить список серверов НЕРЕАЛЬНО.
← →
Rashpil (2003-02-20 14:51) [12]У меня, кстати, строит список доступных SQL серверов.
← →
Reindeer Moss Eater (2003-02-20 14:51) [13]Для NT тоже.
← →
Reindeer Moss Eater (2003-02-20 14:52) [14]Rashpil (20.02.03 14:51)
Попоробуй найти работающий сервер (реально доступный тебе), стоящий за маршрутизатором.
← →
Reindeer Moss Eater (2003-02-20 14:55) [15]Если он не зарегистрирован в клиенте конечно
← →
Rashpil (2003-02-20 14:57) [16]To Reindeer Moss Eater:
Боюсь, что дальнейший разговор на эту тему (получение ВСЕХ списка серверов в МИРЕ) - это флейм. ;)
← →
Reindeer Moss Eater (2003-02-20 15:06) [17]Речь шла всего лишь о всех доступных.
Твой код их не показывает .
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c