Я пытаюсь сжать LocalDb с помощью сообщества Visual Studio 2017. У меня есть клиентское приложение формы Windows Win7 с небольшой базой данных (~ 10 МБ данных), что приводит к размеру базы данных 150 МБ из-за выделения свободного места LocalDb.
Я нашел этот ответ (Выполнение сжатия на База данных SQL Server с использованием команды из linq-to-sql), которая предлагает использовать следующий код:
context.Database.ExecuteSqlCommand(
"DBCC SHRINKDATABASE(@file)",
new SqlParameter("@file", DatabaseTools.Instance.DatabasePathName)
);
DatabaseTools.Instance.DatabasePathName
возвращает расположение моей базы данных в файловой системе из экземпляра одноэлементного класса DatabaseTools.
Код работает, но я продолжаю получать это исключение:
System.Data.SqlClient.SqlException: «Невозможно выполнить операцию сжатия базы данных внутри пользовательской транзакции. Прекратите транзакцию и повторите выписку».
Я пробовал COMMIT
раньше, но безуспешно. Любая идея о том, как эффективно сжать базу данных из кода С#? Спасибо!