Odbc连接字符串导致登录失败

时间:2013-06-08 15:48:10

标签: c# sql-server ado.net odbc

您好我整天都在尝试使用ODBC连接到我的本地sql-server数据库,但我似乎错过了一些东西,因为每次我尝试连接时都会收到此错误:

  

错误[42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]不能   登录请求打开数据库“Library.mdf”。登录失败。

     

错误[42000] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]不能   登录请求打开数据库“Library.mdf”。登录失败。

这是我的源代码:

 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

为了验证数据源是否正常我使用(本地)服务器名称登录SSMS并且它可以工作我也可以在那里看到我的数据库。

在阅读有关此问题的博客后,我还将NT AUTHORITY \ NETWORK SERVICE设置为db_owner但仍然出现错误无法通过登录打开数据库“Library.mdf”请求。

我不确定接下来要做什么来解决这个问题。任何人都可以提供一些建议吗?

1 个答案:

答案 0 :(得分:4)

连接字符串错误。您应该写入数据库的名称,而不是可能包含许多数据库的文件MDF的名称

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

使用SSMS打开数据库时,应展开数据库节点并查看数据库的调用方式,然后用该名称替换问号