3

エンティティフレームワークを使用して接続を開こうとすると、このエラーが発生し続けます。データベースからモデルをまったく問題なく更新できますが、デバッグでコードを実行すると、このエラーが発生します。(Windows 2008 VMで実行)

エラーが表示されるコードフラグメントは次のようになります。

public partial class SpatialDatabase : global::System.Data.Objects.ObjectContext
{
    try
    {
        using (EntityConnection conn = new EntityConnection(this.Connection.ConnectionString))
        {
            conn.Open(); // <== fails here

            EntityCommand cmd = conn.CreateCommand();
            ...

これは、Oracleデータベースへの接続です。

このコードは他の場所でも問題なく実行されているようですので、接続に関係しているように感じます。Oracle for .NET(ODAC)ドライバーを使用しています。64ビットか32ビットかはわかりませんが、モデルを更新するときは機能しますが、デバッグで実行するときは機能しません。

(何を表示するかを知っていれば、追加のコードを表示します!)

app.configからの接続文字列:

<connectionStrings>
  <add name="SpatialDatabaseContext" connectionString="metadata=res://*/SpatialDatabase.csdl|res://*/SpatialDatabase.ssdl|res://*/SpatialDatabase.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=ds_name_here;PASSWORD=password_here;PERSIST SECURITY INFO=True;USER ID=user_id_here&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

[編集]

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

[/編集]

[編集2]

上記は赤いニシンかもしれません。もう一度実行しましたが、そのエラーは表示されませんでしたが、次のInnerExceptionが表示されました。

[Oracle.DataAccess.Client.OracleException] = {"ORA-12154: TNS:could not resolve the connect identifier specified"}

[/ Edit2]

[編集3]

代わりにEFOracleProviderを使用しようとしました。ビルドは問題ありませんが、エンティティモデルを生成すると、次のようになります。

Microsoft (R) EdmGen version 3.5.0.0
Copyright (C) 2008 Microsoft Corporation. All rights reserved.

error 7001: The provider did not return a ProviderManifestToken string.
Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

Generation Complete -- 1 errors, 0 warnings

32ビットバージョンと64ビットバージョンの両方のOracleクライアントコンポーネントがインストールされています。32ビットと64ビットのどちらを実行するかを選択するにはどうすればよいですか?

[/ Edit3]

4

5 に答える 5

1

私はいくつかのリンクを見つけました、それらがあなたに役立つだろうと思いました!したがって、ここで共有します。

このブログ投稿を参照すると、http://th2tran.blogspot.in/2009/06/underlying-provider-failed-on-open.html このセクションは、このブログ記事からあなたと共有することを考えました。「IISはクレデンシャル「NTAUTHORITY\NETWORKSERVICE」の下でデータベースにアクセスしようとしています。SQLServerManagementStudioを介したdb設定と、確かに、そのアカウントは接続を許可されたユーザーの1つとしてリストされていません。そこで彼を追加しました。そして、Webアプリは正常に接続できました。」

これを試してみてください!

すでに処理している場合は、次のリンクを参照してください。MSSQLエラー'基になるプロバイダーがOpenで失敗しました'

お役に立てれば!

于 2012-07-31T16:13:43.407 に答える
1

サーバーが見つからないか、アクセスできませんでした。

接続文字列が見つからないサーバーを指していることを意味します。ほとんどの場合(少なくとも私にとっては)、これは間違った Sql Server 名が原因であり、あなたの場合は似たようなものである可能性があります。を確認してください

Data Source=(local) 

接続文字列の一部は、別のツール/アプリでアクセスできる接続を指しています

(例:ファイルの は同じ場所を指す必要app.configがあります).edmx

于 2012-08-01T08:37:47.980 に答える
1

上記のいずれかが役に立たなかった場合は申し訳ありません。[編集]でSQL Server関連のものを追加したので、追加しました

とにかく、SQL Server で以下を確認してください: http://www.sswug.org/articlesection/default.aspx?TargetID=44331

また、Oracle の場合は、次のリンクが役立つ場合は参照してください。

http://ora-12154.ora-code.com/ http://blogs.msdn.com/b/dataaccesstechnologies/archive/2010/06/30/ora-12154-tns-could-not-resolve-the-接続先サーバーとoracle.aspxの作成中に接続識別子指定エラーが発生しました

よろしく、

ヴァルン・シュリンガルピュア

于 2012-07-31T23:11:11.083 に答える
0

参考までに、修正はありませんでした。

問題が発生していた VM を放棄し、別の VM を構築することになりました (他の誰かが構築したものです!)。

問題はなくなりました。

于 2012-09-14T15:37:19.547 に答える