Работа с VS 2010 и Entity Frameworks с использованием SQL Server Я сталкивался с этим более чем несколько раз.В моем случае это произошло, когда я попытался запустить программу, и у меня был открыт запрос в обозревателе сервера.После сбоя мне пришлось сбросить все соединения, чтобы он снова заработал.
VS2010 копирует исходную базу данных (файл .MDF
и .LDF
), с которым вы работаете в обозревателе сервера, в отладочную версию проектапапка.Это копия, с которой вы работаете во время выполнения.Когда этот файл копируется, он контролируется свойством MDF Copy to Output Directory
, по умолчанию он имеет значение Copy always
.Это означает, что он попытается скопировать файл при новой сборке или запуске, и если он будет открыт в другом месте, произойдет сбой, а затем он зависнет.
Чтобы увидеть соединение, нужно открыть Управление SQL Server.Приставка.По умолчанию VS2010 использует пользовательский экземпляр SQL Server, как указано в строке подключения.В случае Entity Frameworks он находится в XML-файле App.Config.
Экземпляр пользователя - это отдельная в памяти копия SQL Server, которая имеет все права пользователя, назначенные вошедшему в систему пользователю.Чтобы добраться до него, вам нужно найти правильное соединение.
Выполнение этого запроса из основного экземпляра SQL покажет все соединения User Instance.
SELECT owning_principal_name, instance_pipe_name, heart_beat FROM sys.dm_os_child_instances
Это вернет что-то, чтовыглядит следующим образом:
|owning_principle_name | instance_pipe_name | heart_beat
--------------------------------------------------------------------------------
1 | MyServer\Admin | \\.\pipe\91B3063E-CD0F-4B\tsql\query\ | dead
--------------------------------------------------------------------------------
2 | MyServer\Rich | \\.\pipe\B04A1D3B-6268-49\tsql\query\ | alive
Если вы скопируете имя экземпляра и будете использовать его в качестве имени сервера в новом соединении, под именем связанного с ним пользователя вы увидите ваши данные из папки отладки.
Теперь, если щелкнуть правой кнопкой мыши базу данных и выбрать Tasks >
Detach...
. Откроется диалоговое окно Detach Database
, установите флажок Drop Connections
рядом с именем файла базы данных и нажмите OK
.
*.1027 * База данных будет удалена из списка, и вы сможете создать и запустить приложение.