¿Cómo obtengo el resultado resultante de un comando SQL BACKUP en un programa Delphi?
La salida de los comandos sql que es visible para los usuarios que ejecutan comandos SQL de forma interactiva desde el estudio de SQL Server Management, es diferente a la salida que obtiene al ejecutar un comando ADO o un objeto de consulta ADO.
USE [DBNAME]
BACKUP DATABASE [DBNAME] TO
DISK = 'C:\SqlBackup\Backup.mdf'
La salida de finalización exitosa es así:
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).
Cuando ejecuto un TADOCommand o TADOQuery con el CommandText o el SQL establecido anteriormente, no obtengo tal resultado. ¿Cómo leo este "resultado secundario" de la ejecución de un comando SQL? Espero que quizás a través de algunas operaciones de ADO sin procesar pueda ejecutar un comando y recuperar la información anterior, para el éxito, así como cualquier error en la realización de una copia de seguridad de SQL.
Actualizar: La respuesta a continuación funciona mejor para mí que mi intento ingenuo, que no funcionó, usando las clases TADOCommand y TADOConnection de Delphi simples:
Crea TADOCommand y TADOConnection.Ejecutar comando.obtener información-mensajes de vuelta.El problema que experimenté en mis propios intentos de codificación, es que mi primer comando es "use dbname" y el único conjunto de registros que recorrí en mi código fueron los resultados del comando "use dbname", no el segundo comando que estaba ejecutando. La respuesta aceptada a continuación atraviesa todos los conjuntos de registros que regresan de ejecutar el comando ADO, y por lo tanto funciona mucho mejor. Ya que estoy haciendo todo esto en un hilo de fondo, de hecho creo que es mejor crear los Objetos Com sin formato, y evitar cualquier enredo VCL en mi hilo. El código a continuación podría ser un buen componente si alguien está interesado, hágamelo saber y podría crear un componente "SQL Backup for Delphi" de código abierto.