Как передать результат команды SQL BACKUP в программу Delphi?

Вывод команд sql, видимый пользователям, которые интерактивно запускают команды SQL из SQL Server Management Studio, отличается от вывода, который вы получаете от выполнения команды ADO или объекта запроса ADO.

USE [DBNAME] 
BACKUP DATABASE [DBNAME] TO 
 DISK = 'C:\SqlBackup\Backup.mdf'

Результат успешного завершения выглядит следующим образом:

Processed 465200 pages for database 'DBNAME', file 'filename' on file 2.
Processed 2 pages for database 'DBNAME', file 'filename_log' on file 2.
BACKUP DATABASE successfully processed 465202 pages in 90.595 seconds (40.116 MB/sec).

Когда я выполняю TADOCommand или TADOQuery с набором CommandText или SQL, как указано выше, я не получаю такого вывода. Как мне прочитать этот «вторичный вывод» при выполнении команды SQL? Я надеюсь, что, возможно, с помощью некоторых необработанных операций ADO я смогу выполнить команду и получить приведенную выше информацию для успеха, а также любые ошибки при выполнении резервного копирования Sql.

Обновление:Ответ ниже работает для меня лучше, чем моя наивная попытка, которая не сработала, используя простые классы Delphi TADOCommand и TADOConnection:

  • создайте TADOCommand и TADOConnection.
  • выполнить команду.
  • получить информационные -сообщения обратно.

Проблема, с которой я столкнулся в своих собственных попытках кодирования, заключается в том, что моей первой командой является «use dbname», и единственный набор записей, который я прошел в своем коде, был результатом команды «use dbname», а не второй команды, которую я выполнял. Принятый ответ ниже проходит через все наборы записей, которые возвращаются после выполнения команды ADO, и поэтому он работает намного лучше. Поскольку я делаю все это в фоновом потоке, я на самом деле думаю, что в любом случае лучше создавать необработанные объекты Com и избегать любой запутанности VCL в моем потоке. Приведенный ниже код может быть хорошим компонентом, если кому-то интересно, дайте мне знать, и я могу сделать компонент с открытым исходным кодом «SQL Backup for Delphi».

5
задан Warren P 13 August 2012 в 13:45
поделиться