Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MSSQL & Delphi


OleGKu ©   (2003-03-19 15:48:00) 

Как мне можно получить Messages, которые выдаются после исполнения
SQL-команды.
Некоторые команды, например DBCC CHECKDB() не возвращают результирующий набор записей, а пишут только Messages. Как мне получить
в Delphi-программе эти сообщения.


handra   (2003-03-20 11:21:00) [1]

рекомендуют делать так:

Using DBCC Result Set Outputs
Many DBCC commands can produce output in tabular form (using the WITH TABLERESULTS option). This information can be loaded into a table for further use. An example script is shown below:

-- Create the table to accept the results
CREATE TABLE #tracestatus (
TraceFlag INT,
Status INT
)

-- Execute the command, putting the results in the table
INSERT INTO #tracestatus
EXEC ("DBCC TRACESTATUS (-1) WITH NO_INFOMSGS")

-- Display the results
SELECT *
FROM #tracestatus


sniknik   (2003-03-19 20:36:00) [2]

была уже подобная тема, правда там про свои процедуры и PRINT говорили ... ну неважно, все сообщения типа PRINT "Херня всякая" это ошибки
"The message is returned as an informational error in ADO"
и искать нужно в ошибках.
правда для своих рекомендуют ".. use RAISERROR instead of PRINT."
но в этом случае не катит, естественно, чтож попробуй следующий код, получиш тоже что в Квери Анализере.

ADOCommand1.CommandText:= "DBCC CHECKDB";
ADOCommand1.Execute;
for i:= 0 to ADOConnection1.Errors.Count-1 do
Memo1.Lines.Add(ADOConnection1.Errors[i].Description);


(курсор должен быть clUseServer)


handra   (2003-03-19 17:58:00) [3]

вообщето DBCC для некоторых команд может возвращать результат в виде recordset, RTFM MSSQL Books Online


Clickmaker   (2003-03-19 17:22:00) [4]

Ну тогда видимо DBCC OUTPUTBUFFER :)


OleGKu   (2003-03-19 16:29:00) [5]

DBCC INPUTBUFFER возвращает последнюю SQL-команду, посланную
от клиента SQL-серверу, а мне нужно получить сообщения, которые
выдал SQL-сервер после выполнения команды
(те сообщения которые появляются в SQL Query Analyzer на закладке Messages в панели результатов )


Clickmaker   (2003-03-19 15:54:00) [6]

Query.SQL := Format("DBCC INPUTBUFFER(%d)", [spid]);
Query.Open;
LastMsg := Query.FieldByName("EventInfo").AsString;


Наверх

Титульная страница Поиск, карта сайта Написать письмо