1

こんにちは、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"]
                        };
                }
            }
        }
    }

接続文字列でデータベースのプロパティを見ると、接続文字列が問題ないかどうかはよくわかりません。次の行が表示されます。

データ ソース=(ローカル);初期カタログ=ライブラリ;統合セキュリティ=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" 要求を開けませんというエラーが表示されます。

この問題を解決するために次に何をすべきかよくわかりません。誰か提案をいただけますか?

4

1 に答える 1

4

接続文字列が間違っています。多くのデータベースを含む可能性のある MDF ファイルの名前ではなく、データベースの名前を書く必要があります。

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

SSMS でデータベースを開くときは、データベース ノードを展開し、データベースがどのように呼び出されているかを確認してから、疑問符をその名前に置き換えます。

于 2013-06-08T15:51:38.407 に答える