2013-06-08 2 views
1

Привет, я пытаюсь весь день подключаться к моей локальной базе данных sql-сервера с использованием ODBC, но, похоже, что-то не хватает, потому что каждый раз, когда я пытаюсь подключиться, я получаю эту ошибку:Ошибка строки подключения Odbc не удалась

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database "Library.mdf" requested by the login. The login failed.

ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database "Library.mdf" requested by the login. The login failed.

Это мой исходный код:

private string connectionString; 

    public LibraryRepository() 
    { 
     connectionString = @"Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=Library.mdf;"; 
    } 

    public IEnumerable<Book> GetPersonDetails() 
    { 
     using (var conn = new OdbcConnection(connectionString)) 
     { 
      conn.Open(); 
      using (var command = new OdbcCommand("SELECT * FROM Books" , conn)) 
      { 
       var reader = command.ExecuteReader(); 
       while (reader.Read()) 
       { 
        yield return new Book() 
         { 
          Id = (int) reader["Id"], 
          Name = (string)reader["Name"], 
          Author = (string)reader["Author"], 
          Description = (string)reader["Description"], 
          Price = (string)reader["Price"], 
          CategoryId = (string)reader["CategoryId"] 
         }; 
       } 
      } 
     } 
    } 

Я не совсем уверен, что строка conenction нормально, когда я смотрю на свойства базы данных в строке подключения я вижу эту строку:

Data Source=(local);Initial Catalog=Library;Integrated Security=True

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

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 

Для того, чтобы veify если источник данных в порядке, я вошел в SSMS с (локальным) именем сервера, и это работает Я также вижу свою базу данных.

Я также установил NT AUTHORITY \ NETWORK SERVICE как db_owner после прочтения блога об этой проблеме, но все же я получаю сообщение об ошибке Не могу открыть запрос базы данных «Library.mdf» по логину.

Я не совсем уверен, что делать дальше, чтобы решить эту проблему. Кто-нибудь может предложить некоторые предложения?

ответ

4

Строка подключения неверна. Вы должны написать имя базы данных не имя файл MDF, который может содержать множество баз данных

connectionString = @"Driver={SQL Server};Server=local);" + 
        "Trusted_Connection=Yes;Database=??????;"; 

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

+0

Спасибо, что была проблема – aleczandru

+1

Могу ли я спросить вас, почему вы хотите подключиться к SqlServer, используя ODBC вместо SqlClient? – Steve

+1

@Steve Я думаю, что вы комментируете лучше, чем ваш ответ. Речь идет о проблеме _root_. –

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