Я пытаюсь написать программу, которая может импортировать и экспортировать конкретную базу данных, а также пользователей и логины, из базы данных Microsoft SQL Server. У меня есть уровень абстракции между моим кодом и ODBC, который используется в большинстве других наших программ. Уровень абстракции обычно выполняется с отключенной автоматической фиксацией и обрабатывает транзакции самостоятельно, но поскольку команда BACKUP не любит запускаться в какой-либо транзакции, я использую другой метод уровня, называемый executeDirect, который запускает его при включенной автоматической фиксации.
Метод использует функцию SQLExecDirect для запуска команды BACKUP. Когда это сделано, функция возвращает SUCCESS_WITH_INFO, поскольку команда BACKUP предпочитает выводить три строки. Затем код пытается получить выходные данные с помощью SQLGetDiagField и может собрать первую строку из записи № 1, но запись № 2 отсутствует.
Последнее, что хочет сделать метод, это сбросить соединение для автоматического отключения, но при попытке этого происходит ошибка: «Соединение занято результатами другой команды», состояние SQL - «HY000». Итак, очевидно, что соединение хочет передать другие две строки вывода, но я не знаю, как это разрешить.