2009-08-06 12 views
1

古い.net 1.0 webappがあります。私はそれを.net 3.5にアップグレードするために自動アップグレードを使用しましたが(そして2.0も試しましたが)、今はデータベースに接続できません。アップグレード済み.net webappはデータベースへの接続を開けません

これはnoob接続文字列の問題のように見えますが、私はそれがアップグレードの微妙な問題に関連している可能性が高いと考えています。


は、私は一般的なエラーメッセージが表示されます:

サーバーへの接続を確立中にエラーが発生しました。 SQL Server 2005に接続するとき、この障害は、既定の設定ではSQL Serverがリモート接続を許可しないという事実によって引き起こされる可能性があります。 (プロバイダー:パイププロバイダ名前、エラー:40 - SQL Serverへの接続を開けませんでした):

protected static SqlConnection objConn; 

objConn = new SqlConnection(strConnectionString); 

try 
{ 
    objConn.Open(); 
} 

ととしても、それを試してみました


ソースコードは、鐘や笛なしで、かなり基本的なものです:

using (objConn = new SqlConnection(strConnectionString)) 
{ 
    objConn.Open(); 
    ... 
} 

接続文字列は、ブレークポイントを設定し、それを開こうとする前に、接続のプロパティに目を通すために、デバッガを使用してweb.configから来て、そして、私はその接続を見つけることがわかります文字列は正しく:

たconnectionString = "データソース= XXX.XXX.XXX.XXX;初期カタログ= XXXXXX;ユーザーID = XXXXXX;パスワード= XXXXXX"


私は除外したと思うもののほんの一握り:

エラーメッセージは同じであるSQL Server 2005またはSQL Server 2000

VSエラーリストにエラーや警告に接続するかどうか。

接続文字列は、同じデータベースを使用する他のいくつかのWebサイトと同じです。したがって、接続文字列が正しいことがわかります。

ローカルコンピュータ(SQLクエリアナライザ経由でデータベースに接続できる)と通常のWebサーバーから接続しようとしました。ファイアウォールの問題ではなく、最大接続の問題もありません。

そのコンピュータではなくブラウザの問題(および他のWebアプリケーションが正常に接続できるように、サーバーのIPアドレスに接続します。

TCPと名前付きパイプがSQL Serverで有効になって2つのネットワークプロトコルです。

を"ネットワークライブラリ= DBMSSOCN;"を接続文字列に追加すると、エラーメッセージに "プロバイダ:TCPプロバイダ、エラー"が含まれます(先日接続文字列に変更がありましたが、今何を覚えていますか?)


私はすでに、スタックオーバーフロー上の3件の他の同様の記事に目を通してきました。(他の誰かが、それらにリンクしたい場合、私は新しいユーザーだからここにリンクをリストが、その質問のIDのことはできません
、63875 1038888、846479)
し、別のサイトでこの記事はそれはどちらか助けていないしようとするもののいくつかの良いアイデアを持っていた::コメントはあり
http://weblogs.sqlteam.com/tarad/archive/2008/05/23/60609.aspx


私の最高の推測では、その何かがによって引き起こされるということです.netバージョン間のアップグレード - おそらくweb.configの何か間違い?

かなり小さい/基本的なC#アプリですが、3つのプロジェクトに分割されています。

+0

3.5にアップデートするとき、私は何かを確認したい:あなたは3.5sp1かベース3.5だけですか? –

+0

また、同じサーバーから同じ接続文字列を使用してデータベースに接続できますか? –

+0

SQL Server Managementスタジオ(またはクエリアナライザ)を使用して接続することができますが、問題が発生したマシンでもテストしましたか? – Gertjan

答えて

0

投稿したコードを使用してデータベースに接続しようとする以外は何もしないコンソールアプリケーションを作成します。コンソールプログラムで接続文字列をハードコードします。

つまり、実際に実行しようとしているコアコードが正しく動作するように注意してください。私は、.NET 3.5に完全に実行されているASP.NET 2.0アプリケーションをアップグレードするとき

が、私は正確に同じ問題を抱えていた:

+0

最後の手段:-)他のすべてが失敗した場合でも、少なくともまだ試してみたいことが残っています...これもまだ失敗しない限り! – Redzarf

+0

これを試しましたが、コンソールアプリも接続できません。それはシステム管理者の問題にする時間!あなたの提案をありがとう。 – Redzarf

0

thisによれば、SQL 2005は着信ローカルまたはリモート接続を許可するように構成されておらず、自分で有効にする必要があります。

+0

私はそれが問題だとは思わない。彼は、同じ文字列が他のアプリケーション( "接続文字列は同じデータベースを使用する他のいくつかのWebサイトと同じなので、接続文字列が正しいことを知っています。しかし、SQL 2005データベースに接続する際に問題が発生する可能性のある他のユーザーには、この問題を指摘することをお勧めします。 – Gertjan

+0

ええ、誰もがチェックしなければならない最初のものですが、すでに完了していることです。また、SQL 2000データベースにも接続できません。 – Redzarf

0

これらの手順は既に完了していますが、SQL Serverのリモート接続を有効にしてSQL Server Browserサービスを有効にしてみてください。両方のウォークスルーはhereです。

0

別の種類の接続文字列を試してみることもできます。私の接続文字列は、通常次のようにフォーマットされています:

<add name="DataFrom" connectionString="SERVER=[servername];Database=[dbname];UID=[userid];PWD=[password];"/> 

.NET 3.5アプリケーションでも動作していると言われているアプリケーションはありますか?あなたは

using (var = new SqlConnection(strConnectionString)) 
{ 
    objConn.Open(); 
    ... 
} 

を動作するコードのこの部分を取得するために管理方法を



私は私はあなたが

using (objConn = new SqlConnection(strConnectionString)) 

右の意味だと思うも、好奇心?

+0

ありがとう、私は上記のコードサンプルでエラーを修正しました。(ポスティングのためにちょっと整理しました。ちょうどそのままにしておきました)私が提案した接続文字列キーワードを変更しようとします。 – Redzarf

1

この問題のために提供される実際の解が存在ではなかったように、ここで私を助けたものです。 I「は、あなたが見るように

<add name="myDbConnection" providerName="System.Data.SqlClient" connectionString="Data Source=http://localhost;Server=.\SQLEXPRESS;Initial Catalog=MyDatabaseName;Integrated Security=True"/> 

:Webアプリケーションは、Windows XP上のIIS 5.1でホストされていると私は私のweb.configファイルで次の接続文字列を使用しているSQL Server Expressの2005を使用していますここでtcp接続をしていないか、リモートサーバに接続しています。私は、名前付きパイプを介してlocalhostにSQLEXPRESSインスタンスを接続するだけです。それで、私はSQL Server 2005でのリモート接続を許可することとはまったく関係がないと思ったのです。しかし、わかったように、それはあります! (私はこれの実際の理由を知らない!)私はそれを見つけるために数時間を費やしたので、多分これは誰かを助ける...あなたは(詳細についてはグーグルを使用してください)しなければならない何

  1. は、SQL Server 2005セキュリティ構成ツール を経由してローカルおよびリモート接続を許可する(私は両方のTCP/IPを使用する」オプションを選択し、 SQL Server構成マネージャツールを使用してすべてのIPのための1433年までのリスニングTCPポートを設定して名前付きパイプ」)
  2. SQL Server Browserサービスを有効にし
  3. :-)実行中のウェブアプリをお楽しみください

.NET 3.5 Web AppからSQL Serverに正常に接続するには、.NET 2.0からすでに動作しているときに、このすべてが必要なのはなぜですか?

関連する問題