Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-19648
passage2003
2003-03-25 19:22
2003.04.07
Исполняется долгий процесс обработки


1-19591
Sherlock
2003-03-25 09:19
2003.04.07
Нумерация в Qreport


1-19675
Johnmen
2003-03-24 10:45
2003.04.07
OLEAUT.DLL


14-19848
Я
2003-03-21 10:00
2003.04.07
Программирование


3-19427
ArtemB
2003-03-18 12:28
2003.04.07
Работа с базами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский