2

настоящее время я использую эту строку соединения для подключения к моей базе данных, которую я создал в Visual Studio:Получение имя базы данных из базы данных SQL Server Express в Visual Studio

Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Database1.mdf;User Instance=true 

Я пытаюсь хозяйничать сайт с IIS, поэтому я могу обходиться с заголовками ответов, но у меня возникает проблема, описанная здесь: SQL Server Express connection string for Entity Framework Code First

Я пытаюсь найти, какое имя базы данных указать, но не повезло. Я попытался Initial Catalog=Database1 но дал мне эту ошибку:

Cannot create file 'D:\docs\Visual Studio 2010\Projects\QuickHomePage\QuickHomePage\App_Data\Database1.mdf' because it already exists. Change the file path or the file name, and retry the operation.
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

Я просто пытаюсь прикрепить к Database1.mdf. Почему он дает ошибки в попытке создать его? Один комментарий предложил добавить файл .mdf в другой экземпляр базы данных, чтобы увидеть, что внутри него.

Для этого потребуется запустить студию SQL Server Management? Каждый раз, когда я пытаюсь подключиться к Server Database Database Engine и локальному компьютеру, он вызывает ошибку соединения.

ответ

3

Имя базы данных - это имя, которое вы даете вашему файлу .MDF при подключении к экземпляру сервера SQL Server (Express). Не существует фиксированного имени базы данных «внутри» MDF, которое вам нужно обнаружить - это полностью зависит от вас, что вы называете своей базой данных на сервере.

Так что, если вы приложите ваш Database1.mdf так:

CREATE DATABASE CrazyDatabase ON 
(FILENAME = N’C:\Data\Database1.mdf’), 
(FILENAME = N’C:\Data\Database1_Log.ldf’) 
FOR ATTACH 

тогда ваше имя базы данных CrazyDatabase - но это не имеет никакой связи с исходным именем файла MDF или любого содержимого внутри него - вы можете назвать это что-нибудь иначе тоже - что бы вы ни выбрали.

В этом случае ваша новая строка подключения будет:

Server=.\SQLEXPRESS;Database=CrazyDatabase;Integrated Security=SSPI; 
+0

Так что указание как файла .mdf, так и базы данных бессмысленно? В процессе привязки к «реальному» экземпляру я указываю имя базы данных?Означает ли это, что я не могу использовать файл .mdf с EF, если я хочу разместить через IIS? – RandomEngy

+1

@RandomEngy: yes - «AttachDbFileName =» предназначен для целей разработки только на вашей собственной машине dev; после того, как вы входите в производство, вы помещаете базу данных на * real * SQL Server, присоединяете ее и с этого момента, вы ** только ** когда-либо используете это имя базы данных, которое вы определили, - имя файла становится полностью не имеет значения. Вы должны ** никогда ** не определять как в строке соединения! –

+1

Спасибо, что разобрался. У меня все наладилось. – RandomEngy

2

Если вы хотите видеть только DB NAME

Вы не должны приложить DB, чтобы увидеть название DB. В SSMS или в sqlcmd или в MSQRY32.EXE :-) (от MS Office), вы можете запустить этот простой запрос: выход

DBCC checkprimaryfile(N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DataFile.mdf', 2) 

Пример:

property   value 
---------------- ----------------- 
Database name AlaBalaPortocala 
Database version 655 
Collation  53268 

Ошибка

К см. список со всеми файлами для вашей БД, которые вы можете использовать:

DBCC checkprimaryfile(N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DataFile.mdf', 3) 

Пример вывод:

status  fileid name     filename 
----------- ------ -------------------- --------------------------------------------------------------------------------------------- 
2   1  AlaBalaPortocala  C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DataFile.mdf    
1048642  2  AlaBalaPortocala_log C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AlaBalaPortocala_log.ldf 

Сообщение об ошибке из вашего вопроса говорит о том, что один из этих файлов (см filename столбца) уже существует. Решение заключается в подключении БД и изменении имени файла/файла с использованием решения marc_s.

+0

В соответствии с этим, мое имя базы данных - это путь ENTIRE к файлу базы данных. – RandomEngy

+0

Извините. Я понятия не имею. Эта команда используется 'SSMS' перед присоединением базы данных:' Object explorer> Базы данных> Atach ... 'Взгляните на этот [запрос, отправленный в Microsoft Connect] (http://connect.microsoft.com/SQLServer/feedback/подробности/293012/MSFT-EDW-пожалуйста-документ-его-настоящее-недокументированные-внутреннего-DBCC-checkprimaryfile-оператор). –

Смежные вопросы