Моя среда разработки — C#, SQL Server 2014 LocalDB, SQL Server 2012 Express, Windows 10, Visual Studio 2015.
Когда пользователям моего приложения нужно переместить свой файл localDB (.mdf
) в другое место, на другой компьютер (сервер LocalDB), отсоединиться от компьютера A и подключиться к компьютеру B, а затем мы можем успешно запустить команду базы данных BACKUP.
Однако в случае, если пользователи по ошибке отсоединились или пользователи передумали постоянно использовать компьютер A, мое приложение должно иметь возможность повторно подключить отсоединенный файл базы данных LocalDB (.mdf
) к тому же компьютеру (тот же сервер LocalDB).
Когда я запускаю команду BACKUP DATABASE
после того, как мое приложение успешно повторно подключило файл базы данных к тому же компьютеру, сообщение об ошибке отображается как
Невозможно открыть физический файл. Процесс не может получить доступ к файлу базы данных, поскольку файл базы данных используется другим процессом.
BACKUP DATABASE аварийно завершена
Итак, я вошел в Microsoft Server Management Studio и вижу 2 файла базы данных с определенным именем, поскольку первый - greendb.mdf
(только имя), второй - c:\users\kay\appdata\greendb.mdf
(с полным путем).
Я думаю, что c:\users\kay\appdata\greendb.mdf
(с полным путем) создается при отключении базы данных. И когда я щелкаю по нему с помощью сопоставления безопасности-логин-кай-пользователь, в отличие от других баз данных, отображающих свои разрешения внутри, отсоединенная база данных с полным путем не показывает свои разрешения и показывает сообщение об ошибке, например,
Невозможно преобразовать объект System.DBNull в System.String (Microsoft.SqlServer.Smo)
Кажется, Microsoft LocalDB Server по-прежнему распознает отсоединенную базу данных с полным путем и путается с недавно присоединенной базой данных (только имя без полного пути).
Любые отличные идеи будут высоко оценены!
Большое спасибо !