SqlExpress LocalDb не может открыть файл

У меня есть два файла MDF в каталоге по пути AppData/Local. Если я попытаюсь открыть их с помощью LocalDb.

Моя строка подключения имеет вид:

Источник данных=(localdb)\v11.0;AttachDbFilename="C:\Users\Anna\AppData\Local\CaseTrakker Software\CTDynamoDisconnected\CTDynamoDisconnected_Data.mdf";Integrated Security=True;Время ожидания подключения=10

У меня есть пример настольного приложения, которое пытается подключиться к этому MDF, и я получаю следующее исключение:

System.Data.SqlClient.SqlException (0x80131904): не удается открыть базу данных «C:\USERS\ANNA\APPDATA\LOCAL\CASETRAKKER SOFTWARE\CTDYNAMODISCONNECTED\CTDYNAMODISCONNECTED_DATA.MDF», запрошенную при входе в систему. Вход не выполнен. Ошибка входа для пользователя «IMA\Anna».

Если я перемещу этот файл в любое другое место или переименую его (даже на более длинное имя), я смогу подключиться к нему.

Кажется, в этом месте есть что-то особенное или что-то в этом роде.

Еще одна странность: на прошлой неделе это сработало. Насколько мне известно, на моей машине и в безопасности домена ничего не изменилось.

Я в полной растерянности, что еще можно попробовать. Идеи?


person David Mullin    schedule 31.07.2012    source источник


Ответы (3)


Можете ли вы проверить, есть ли что-нибудь интересное в файле журнала экземпляра LocalDB? По умолчанию он находится в папке %localappdata%\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0.

person Krzysztof Kozielczyk    schedule 02.08.2012
comment
Я не уверен. Я вижу это: учетная запись службы — «IMA\Anna». Это информационное сообщение; От пользователя не потребуется никаких действий. Затем, намного позже, я вижу это: Ошибка входа для пользователя «IMA\Anna». Причина: не удалось открыть явно указанную базу данных «C:\USERS\ANNA\APPDATA\LOCAL\CASETRAKKER SOFTWARE\CTDYNAMODISCONNECTED\CTDYNAMODISCONNECTED_DATA.MDF». [КЛИЕНТ: ‹named pipe›] - person David Mullin; 02.08.2012
comment
Помните - если я просто переименую файл, то он работает нормально. Таким образом, это не какие-то внутренние настройки безопасности файла. - person David Mullin; 02.08.2012
comment
Я надеялся, что будет больше информации о причине, по которой не удалось открыть базу данных. Это может быть что-то такое же простое, как неправильно названный файл LDF. Можете ли вы попробовать запустить select * from sys.databases, чтобы узнать, к какому имени подключена эта база данных (я подозреваю, что что-то не так с метаданными в главной БД). Затем вы можете просто отсоединить его с помощью sp_detach_db, и это должно решить проблему. При следующем подключении к нему AttachDbFileName воссоздаст метаданные с нуля. - person Krzysztof Kozielczyk; 03.08.2012
comment
Я использую LocalDb, поэтому при запуске БД никак не подключается. И при запуске нет файла LDF. - person David Mullin; 07.08.2012
comment
Вы пробовали запустить команду, которую я дал? Если база данных когда-либо была подключена к экземпляру LocalDB (в вашем случае (localdb)\v11.0), она будет присоединена (зарегистрирована) к этому экземпляру до тех пор, пока не будет явно удалена. Это не помешает вам переместить файл или прикрепить его к другому экземпляру LocalDB, но может помешать последующим попыткам подключения. - person Krzysztof Kozielczyk; 07.08.2012

Одной из причин этой проблемы является то, что вы заходите в папку C:\Users\[username] и удаляете файлы MDF и LDF. Если вы сделаете это, то это сродни проделыванию того же самого с полноценным SQL Server. Экземпляр сервера все еще думает, что у него есть базы данных, но они, очевидно, не будут работать.

Чтобы решить эту проблему, нужно изменить имя базы данных в строке подключения, и оно должно работать.

Чтобы решить эту проблему, откройте SQL Management Studio, подключитесь к серверу (LocalDb)\v11.0 (вероятно, с проверкой подлинности Windows), и таким образом вы сможете отсоединить эти базы данных.

person Jaxidian    schedule 18.01.2015

В моем случае у меня была эта БД какое-то время, и я по ошибке удалил ее файлы MDF и LDF.

Чтобы решить эту проблему, я открыл SQL Management Studio и подключился к (localdb)\MSSQLLocalDB с помощью Windows Authentication, а затем вручную создал новую пустую БД с желаемым именем, как в строке подключения web.config.

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=myDb;Integrated Security=True;" providerName="System.Data.SqlClient" />
person Korayem    schedule 04.10.2016