Вниз
Скачать: CL | DM;

MSSQL & Delphi   Найти похожие ветки 

 
OleGKu   (2003-03-19 15:48) [0]

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


 
Clickmaker ©   (2003-03-19 15:54) [1]

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


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

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


 
Clickmaker ©   (2003-03-19 17:22) [3]

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


 
handra ©   (2003-03-19 17:58) [4]

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


 
sniknik ©   (2003-03-19 20:36) [5]

была уже подобная тема, правда там про свои процедуры и 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-20 11:21) [6]

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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
3-19457
Suh_AN
2003-03-17 17:56
2003.04.07
Подскажите, как получить id после вставки новой записи!


3-19448
Sheva
2003-03-18 16:49
2003.04.07
Справочники.


3-19434
off
2003-03-18 13:41
2003.04.07
Иной способ?


1-19626
Step[B.M.]
2003-03-23 03:26
2003.04.07
DLL. Проблемы с строковыми типами.


3-19486
Юрий Зотов
2003-03-19 13:49
2003.04.07
Шахматки




   Наверх