![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить список имен доступных серверов и список баз данных [D5, MSSQL]
Ромн © (2003-01-20 17:15:00)Субж.
То есть, есть несколько mssql серверов, на них живут по несколько баз, как мне получить сначала имена этих серверов, а потом соответственно имена баз. Все это нужно конечно чтобы составить строку подключения для ado.
Огромное спасибо.
asmith (2003-01-20 18:07:00) [21]С помощью SQLDMO:
var
FDMOApplication : Variant;
Names : Variant;
i : integer;
begin
try
FDMOApplication := CreateOleObject("SQLDMO.Application");
Names := FDMOApplication.ListAvailableSQLServers;
for i:= 1 to Names.Count do
lbServers.Items.Add(Names.Item(i));
finally
FDMOApplication := Null;
end;
end;
Здесь в combo box lbServers добавляется список найденных в сети MSSQL-серверов. Необходимое условие - инсталлированный клиент MSSQL.
sniknik (2003-01-20 18:02:00) [22]похоже вы о разных вещах говорите
function TDMod.GetSQLServers(ServersItems: TStrings): boolean;
var NameList, Application: OleVariant;
i:Integer;
begin
result:= false;
try
try
Application:= CreateOleObject("SQLDMO.Application");
NameList:= Application.ListAvailableSQLServers;
For i:= 1 to NameList.Count do
ServersItems.Add(NameList.Item(i));
result:= true;
except
on E: Exception do DoIfError(E.Message);
end;
finally
NameList:=Unassigned;
Application:=Unassigned;
end;
end;
{2 метода один закомментарен}
function TDMod.GetSQLDatabases(ServerName: String; BasesItems: TStrings): boolean;
{
//получение баз через ADO
var DBName: string;
begin
ADOConnection1.OpenSchema(siCatalogs, EmptyParam, EmptyParam, ADODataSet1);
while not ADODataSet1.Eof do
begin
DBName := ADODataSet1["CATALOG_NAME"];
MessageBox(0, PChar(DBName), "Warning", MB_OK);
ADODataSet1.Next;
end;
end;
}
begin
result:= false;
try
ADOConnection1.Close;
ADOConnection1.ConnectionString:= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source="+ServerName;
ADODataSet1.CommandText:= "EXEC sp_databases";
ADODataSet1.Open;
while not ADODataSet1.Eof do begin
BasesItems.Add(ADODataSet1.FieldByName("DATABASE_NAME").AsString);
ADODataSet1.Next;
end;
ADOConnection1.Close;
result:= true;
except
on E: Exception do DoIfError(E.Message);
end;
end;
но возможно тебе просто нужна одна из фенкций
EditConnectionString(ADOConnection) //модуль AdoConed
PromptDataSource(Handle, ComboBox1.Text) //модуль ADODB
Ромн (2003-01-20 18:01:00) [23]Хорошо, а как оттуда выдрать список баз ?
Ромн (2003-01-20 17:51:00) [24]Спасибо !!!
Reindeer Moss Eater (2003-01-20 17:45:00) [25]HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\ConnectTo
Ромн (2003-01-20 17:43:00) [26]Если можно , чуть-чуть более развернутей ?
Reindeer Moss Eater (2003-01-20 17:26:00) [27]Ответ прежний
Ромн (2003-01-20 17:25:00) [28]Я не точно выразился , как мне это полуть в во время выполнения приложения ?
Reindeer Moss Eater (2003-01-20 17:20:00) [29]Получи список серверов из списка зарегистрированных серверов в клиентском ПО MSSQL