2011-12-24 7 views
-1

Я создал базу данных в SQL Server Management Studio, и я назвал ее SalonDatabase. Я попытался подключиться к базе данных в VS C#. Для этого я создал две connectionString, и только одна из них работает, поэтому я хотел бы знать, почему.не удается подключиться к базе данных SQL

Это один работает:

string connString = @"Data Source=.\SQLEXPRESS;initial catalog=SalonDatabase;Integrated Security=SSPI"; 

Однако следующий не работает, даже если я знаю, за то, что файл находится в этой директории

string connString = @"Data Source=.\SQLEXPRESS; 
           Initial Catalog=C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SALONDATABASE.MDF;Integrated Security=SSPI"; 

Ошибка я получаю является:

Невозможно открыть базу данных "C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA \ SALONDATABASE.MDF" REQ загружаемый логином. Ошибка входа в систему. Ошибка входа для пользователя «USER-PC \ USER»

Теперь я вошел в систему как администратор на своем компьютере. Я также читал о экземплярах пользователя на SQL-сервере, но я не вижу, почему это причина неудачи второго соединения.

+0

В этом контексте каталог не является файлом –

+0

Я также пробовал attachdbfilename, но получаю ту же ошибку – user990692

+1

[Пользовательские экземпляры устарели.] (Http://msdn.microsoft.com/en-us/library/ms143684. aspx) –

ответ

0

Измените ваше соединение, чтобы «прикрепить» ваш МДФ. Учитывая, что ваш путь .mdf имеет пробелы, обязательно заключите его в одинарные кавычки.

Server=.\SQLExpress; 
AttachDbFilename='C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SALONDATABASE.MDF'; 
Database=dbname; 
Integrated Security=SSPI; 
Trusted_Connection=Yes; 
+0

Вот почему я использовал @ перед дорогой. – user990692

+0

Нет, вы использовали @, потому что используете строковый литерал, допускающий многострочные макеты. У вас все еще будут проблемы с пробелом. –

1

База данных создается с помощью SQL Server Management Studio поэтому не используйте AttachDBFileName. Для получения строки подключения вы можете использовать средство «Проводник сервера» (из меню «Вид») Visual Studio.

Добавить соединение Из Server-Explorer + Щелкните правой кнопкой мыши по подключению данных + Добавить соединение + Выберите источник данных Microsoft Sql Server (изменить).

После добавления соединения щелкните правой кнопкой мыши, чтобы выбрать/открыть свойства окон.

Data Source=.\sqlexpress;Initial Catalog=SalonDatabase;Integrated Security=True 
0

Initial Catalog используется для установки имени базы данных по умолчанию, когда мы подключиться к серверу. , когда вы передаете полный путь к файлу базы данных, соединение String выполняет поиск базы данных с именем C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SALONDATABASE.MDF , который на самом деле не существует, поэтому он терпит неудачу. вы можете использовать первоначальный подход, и если вы хотите использовать полный путь, то AttachDbFilename может быть использован как предложено P.Campbell

0

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

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

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

В этом случае вы в основном указываете SQL Server в строке подключения (используя AttachDbFileName=salondatabase.mdf и с User Instance=True), чтобы он запускал отдельный экземпляр SQL Server Express для вашего пользовательского контекста и автоматически прикреплял этот физический файл MDF, указанный в качестве его базы данных и предоставить вам доступ к этому.

Как уже упоминалось в другом комментарии, это устаревшая функция - SQL Server 2012 принесет новую, надеющуюся гладкостью концепцию локальных баз данных. Поэтому, на мой взгляд, вы должны стараться избегать использования этой функции - это больше проблем, чем что-либо еще.

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