База данных резервного копирования SQL Server через ODBC - PullRequest
1 голос
/ 10 ноября 2008

Я пытаюсь написать программу, которая может импортировать и экспортировать конкретную базу данных, а также пользователей и логины, из базы данных Microsoft SQL Server. У меня есть уровень абстракции между моим кодом и ODBC, который используется в большинстве других наших программ. Уровень абстракции обычно выполняется с отключенной автоматической фиксацией и обрабатывает транзакции самостоятельно, но поскольку команда BACKUP не любит запускаться в какой-либо транзакции, я использую другой метод уровня, называемый executeDirect, который запускает его при включенной автоматической фиксации.

Метод использует функцию SQLExecDirect для запуска команды BACKUP. Когда это сделано, функция возвращает SUCCESS_WITH_INFO, поскольку команда BACKUP предпочитает выводить три строки. Затем код пытается получить выходные данные с помощью SQLGetDiagField и может собрать первую строку из записи № 1, но запись № 2 отсутствует.

Последнее, что хочет сделать метод, это сбросить соединение для автоматического отключения, но при попытке этого происходит ошибка: «Соединение занято результатами другой команды», состояние SQL - «HY000». Итак, очевидно, что соединение хочет передать другие две строки вывода, но я не знаю, как это разрешить.

1 Ответ

1 голос
/ 12 ноября 2008

Команда BACKUP DATABASE работает как пакет, требуя вызова SQLMoreResults для продолжения резервного копирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...