Я думаю, вы на правильном пути. Получаемые сообщения об ошибках указывают на то, что какой-то процесс SQL Server сохраняет файл базы данных открытым. Кроме того, SQL Server позволяет открывать файл базы данных одновременно только одному процессу SQL Server.
Вы также, вероятно, правы, подозревая, что пользовательский экземпляр SQL Server Express является виновным процессом. Пользовательский экземпляр - это особый процесс SQL Server, который не запускается как служба, а запускается и принадлежит приложению, которое пытается подключиться к нему. В вашем случае есть две пользовательских инстанса, которые могут быть проблемой: одна принадлежит упомянутому вами приложению ASP.NET, а другая принадлежит вам и запущена Visual Studio. Если вы используете IIS Express или настроили пул приложений IIS для приложения ASP.NET для запуска в качестве вашей учетной записи, у нас есть только один пользовательский экземпляр, о котором нужно беспокоиться.
Я рекомендую не использовать пользовательские экземпляры и не пытаться подключиться напрямую к файлу базы данных. Перейдите через строки подключения и удалите User Instance=true
из всех них. Вы также хотите удалить свойство AttachDBFilename=...
.
Если файл базы данных добавлен в любое из ваших решений Visual Studio, удалите его (только будьте осторожны, чтобы не удалить сам файл). Последний шаг - удалить все подключения к файлу базы данных из узла «Подключения данных» в обозревателе серверов.
Затем перезапустите компьютер, чтобы убедиться, что все пользовательские экземпляры, работающие в фоновом режиме, были отключены. После того, как машина снова запустится, вы сможете прикрепить файл базы данных обратно к основному SQL Server Express, используя SQL Server Management studio. Назовем базу данных Whist
Для подключения к вашей базе данных используйте следующую строку подключения:
Data Source=.\SQLExpress;Integrated Security=true;Initial Catalog=Whist
При подключении из приложения ASP.NET убедитесь, что в приложении SQL Server Express создана учетная запись для приложения.