Вземете списък с всички бази данни

Здравейте! Как да изброя всички бази данни на сървъра mssql2000 с помощта на ado в delphi6? Разбира се, трябва да използвате TADOConnection. Но не мога да намеря как. Кажете ми кой знае.

Съхранена процедура sp_helpdb exec sp_helpdb

> Най-добър до 2024 Точно така, но какво ще стане, ако не можете да използвате sp сървъри? Връзката със сървъра се осъществява дори ако редът connectionString не указва името на базата данни - за това UserName стойността е зададена в съответствие с настройките. Списъкът с бази, изглежда, трябва да се търси в adoConnection, но няма такива свойства в adoConnection.Properties.

Последващи действия: по подразбиране на sp_helpdb е разрешено да работи за публичната роля, но не всички администратори са еднакво полезни. Потребителят все още няма да получи достъп (по лоялен начин) до забранени обекти, но някакъв списък трябва да се вижда на клиента.

изберете * от master..sysdatabases?

Струва ми се, че стандартните методи няма да работят. Дори да е в ADO, не е факт, че е реализиран във VCL

>>Точно така, но какво ще стане, ако не можете да използвате sp сървъри? Кой го забрани?!

> SergSuper Тъжно е. Оказва се, че можете да разберете само базата данни по подразбиране.

> Най-добър преди 2024 г. (15.10.2002 г. 14:15 ч.) Е, изчистихте флага "EXEC" за ServerName.master.sp_helpdb и други, както сметнете за добре.

И ако дискът е форматиран, също трябва да работи. Програмата трябва да задава някои изисквания и да принуждава потребителите да ги спазват.

> Най-добър до 2024 Прав сте, просто искам да предвидя, ако е възможно, всички обстоятелства. Разбира се, ще трябва да се използва sp_helpdb, но подозирам, че списъкът с бази данни може да бъде получен от TADOConnection.

Следпо подразбиране на sp_helpdb е разрешено даизпълнение за публичната роля, но не всички администратори са еднакво полезни. Потребителят все още няма да получи достъп (по лоялен начин) до забранени обекти, но някакъв списък трябва да се вижда на клиента.Така че ADO също няма да получи достъп :) Как мислите, че получава списъка с бази данни?

Vlad2 (15.10.02 14:33) - но подозирам. вероятно подозирате правилно вижте получаването на схеми ADOConnection1.OpenSchema(); има параметри за извикване siDBInfoKeywords siDBInfoLiterals може би това е. но вие сами ще трябва да го разберете, аз не го използвах (беше ограничено до полеви данни без отваряне на набор от данни). SergSuper (15.10.02 14:52) разбира се, ако ADO няма достъп, нищо няма да излезе от това.

> SergSuper (10/15/02 14:52) Проверих: деактивирах sp_helpdb и се свързах със сървъра.

> sniknik OpenSchema(); ? Изглежда пътят е тук. Благодаря ти.

пиши както можеш. дойде по-удобно. (Може би)

> sniknik Ако днес нямам време (работният ни ден свърши), то утре в същата тема.

Сделка. можете да го дублирате по пощата, ако не е бракуван. :-))

ADOConnection1.OpenSchema(siCatalogs, EmptyParam, EmptyParam, ADODataSet1); докато не е ADODataSet1.Eof do begin DBName := ADODataSet1["CATALOG_NAME"]; ADODataSet1.Next; край;

Но все още е същият db списък

какво от това? ADOConnection1.OpenSchema(siColumns, VarArrayOf([Unassigned, Unassigned, SelectedTable, Unassigned]), EmptyParam, FieldSchema); информация за полетата на таблицата. предложено е да се провери siDBInfoKeywords siDBInfoLiterals и има много повече възможни схеми. практически информация за "всичко". така че нека работи.

Най-добър до 2024 г. - съжалявам, не разбрах в началото. това е точно това, от което се нуждаете.средства на ADO (без селект) и точно как беше във въпроса.

Момчета, животът е страхотен. Благодаря ти. OpenSchema(siCatalogs, . ) е това, от което се нуждаете. > sniknik: Пратих ти писмо там.