Резервное копирование БД выполняется в режиме отладки, но не в режиме выпуска

У меня есть небольшое приложение c # wpf для выполнения простых вычислений с использованием базы данных Sql Express 2008 R2, а в разделе настройки есть кнопка резервного копирования, которая запускает код

                using (DTZDataContext db = new DTZDataContext())
                {
                    db.ExecuteCommand(string.Format("BACKUP DATABASE DtzDb TO DISK = '{0}'", filename));
                }

Строка подключения, которую я использую,

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\DTZ.mdf;Integrated Security=True;User Instance=True;Database=DtzDb

Я подтвердил, что на данный момент в приложении нет других открытых подключений к БД, и резервное копирование работает нормально в отладке, но как только я скомпилирую для выпуска (запускаемого из VS или автономно), я получаю сообщение об ошибке:

Ошибка операционной системы 32 «32 (не удалось получить текст для этой ошибки, причина 15105)». РЕЗЕРВНАЯ БАЗА ДАННЫХ аварийно завершает работу.

Как я могу это исправить, желательно без установки Sql Management Studio на каждую машину и подключения БД? Каков рекомендуемый способ резервного копирования? Почему это работает в Debug, но не в Release.

Огромное спасибо


person Matthew Hood    schedule 20.05.2011    source источник


Ответы (1)


Плохо... Оказывается, VS изменил строку подключения DataContext на DTZConnectionString1 и создал другой файл настроек. Теперь я использую правильную строку подключения, она работает нормально.

Не знаю, почему неправильный работал в отладке, но не в выпуске.

person Matthew Hood    schedule 20.05.2011