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