1

次の接続文字列を使用して、リモート SQL Server インスタンスに接続しています

"Network Library=DBMSSOCN;Data Source=xx.xxx.x.xxx,1433;Initial Catalog=MyDatabase;User Id=MyUserId;Password=MyPassword;Connect Timeout=120;"

  1. Sql サーバー ブラウザーが実行されている
  2. ローカルおよびリモート接続は、TCP/IP のみを使用して許可されます

アプリケーションは、次の SqlException を引用してランダムに接続に失敗します

TCP プロバイダー、エラー: 0 - 接続先が一定時間後に適切に応答しなかったために接続の試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました

次のように接続するコード

using (SqlConnection connection = new SqlConnection(m_ConnectionString))
{
    connection.Open(); // falls over here
}

ポート 1433 のファイアウォール設定について考えましたが、ファイアウォールが接続を許可する場合と許可しない場合があるのはなぜですか?

Sql Server エージェントを実行する必要がありますか? もしそうなら、MSDNのSql Server Agentの説明がこの点で明らかではないのはなぜですか?

ありがとう!

編集: ファイアウォールに明示的なルールを追加して 1433 を開くことを試みましたが、これまでのところ非常に良好ですが、修正するかどうかを言うのは難しいため、再びランダムになる可能性があります

4

3 に答える 3

3

いいえ、SQL Server エージェントが実行されている必要はありません。SQL Server エージェントは、SQL サーバーでスケジュールされたタスクを実行するためにのみ必要です。

これはおそらくネットワークの問題です。サーバーにpingできますか?その場合は、/t を使用して継続的に ping を実行し、すべてのパケットが到着するかどうかを確認してください。

また、SQL サーバーの負荷の問題である可能性もあります。サーバーはアイドル状態ですか、それとも負荷がかかっていますか?

アプリケーションを SQL サーバーまたは同じ LAN でローカルにテストして、問題が解決しないかどうかを確認していただけますか?

于 2009-02-12T16:56:00.363 に答える
1

SQL Server エージェントを今すぐ実行する必要はありません。このエラーは、シナリオからタイムアウトが発生していることを示しています。

ブロックされる理由はさまざまです。おそらく、ファイアウォールは、ポートで一度に特定の数の接続のみを許可するように構成されています。または、データベース自体が接続数を制限しています。インターネットの速度が遅く、120 秒のタイムアウトに達しています。リストは続きます。:)

于 2009-02-12T16:58:16.613 に答える
1

SQL Server データベースがスリープ状態になります。初めて接続しようとすると、再起動する必要があり、接続がタイムアウトします。

オプション「自動クローズ」が「偽」に設定されていることを確認してください。これにより、最後の接続が閉じられた後にそれ自体がシャットダウンされるのを防ぎます。

http://itknowledgeexchange.techtarget.com/sql-server/auto-close-is-almost-as-bad-as-auto-grow/

于 2010-09-08T20:34:25.347 に答える