2011-12-23 19 views
2

Hosted WebロールASP.NET/Umbracoアプリケーションから接続しようとすると、SQL Azureのタイムアウトの問題が発生します。問題は断続的です。例外は次のとおりです。(:xxxxxxxxxxxで呼ばれる):/microsoft-crm/microsoft-crm-2011.aspxでSQL Azureのタイムアウト

umbraco.DataLayer.SqlHelperException:Umbraco例外(DataLayer):ExecuteReaderの中 SQLヘルパー例外 - - > System.Data.SqlClient.SqlException:タイムアウトが切れています。操作が完了する前にタイムアウト時間 が経過したか、サーバーが応答していません( )。 でSystem.Data.SqlClient.SqlInternalConnection.OnError(SqlExceptionが 例外、ブールbreakConnection) System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj、UInt32型エラーで System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()で) システムでSystem.Data.SqlClient.TdsParserStateObject.ReadByte()で System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()で System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult、TdsParserStateObject stateObj)で。 Data.SqlClient.TdsParser.Run(RunBehavior runBehavior、 SqlCommand cmdHandler、SqlDataReader dataStream、 BulkCopySimpleResultSet bulkCopyHandler、 System.Data.SqlClient.SqlCommand.FinishExecuteReaderでSystem.Data.SqlClient.SqlDataReader.get_MetaData()でSystem.Data.SqlClient.SqlDataReader.ConsumeMetaData() でTdsParserStateObject stateObj)(SqlDataReaderのDS、 RunBehavior System.Data.SqlClient.SqlCommand.RunExecuteReaderTds System.Data.SqlClient.SqlCommand.RunExecuteReader(たCommandBehavior cmdBehavior、RunBehavior runBehavior、で(のCommandBehavior cmdBehavior、RunBehavior runBehavior、ブールreturnStream、ブール 非同期)でrunBehavior、ストリングresetOptionsString)ブール戻り値、文字列 メソッド、DbAsyncResult結果) System.Dat System.Data.SqlClient.SqlCommandで System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehaviorの 行動、文字列方式)でa.SqlClient.SqlCommand.RunExecuteReader(CommandBehaviorの cmdBehavior、RunBehavior runBehavior、ブールreturnStream、文字列 方法) umbraco.DataLayer.SqlHelpers.SqlServer.SqlServerHelper.ExecuteReader(文字列で Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteReader(文字列 れたconnectionString、CommandTypeをCommandTypeを、文字列CommandTextを、 SqlParameter [] commandParameters)で.ExecuteReader(たCommandBehavior 挙動) commandText、SqlParameter [] parameters) umbraco.DataLayer.SqlHelper umbraco.presentation.templateControls.Macro.CreateChildControlsでumbraco.macro.ReturnFromAlias(文字列の別名)でumbraco.macro..ctor(のInt32 ID)で1.ExecuteReader(String commandText, IParameter[] parameters) --- End of inner exception stack trace --- at umbraco.DataLayer.SqlHelper 1.ExecuteReader(文字列CommandTextを、IParameter []パラメータ)()
System.Web.UI.Controlから継承されています。 Control.InitRecursive(Control namingContainer)を に設定します。 にSystem.Web.UI.Control.InitRecursive(Control namingContainer)を設定します。 にSystem.Web.UI.Control.InitRecursive(Control namingContainer)を設定します。System.Web.UI.Control.InitRecursive(Control namingContainer)01でSystem.Web.UI.Control。 System.Web.UI.Page.ProcessRequestMainで System.Web.UI.Control.InitRecursive(コントロールのNamingContainer)(ブール includeStagesBeforeAsyncPoint、ブールのincludeStagesAfterAsyncPoint)SQLへ

当社の接続文字列でInitRecursive(コントロールのNamingContainer) Azureでは、次のとおりです。

サーバー= TCP:xxxxxxx.database.windows.net、1433;データベース=データベース名;ユーザー ID =サーバー名@ユーザー名、パスワード=パスワード; Trusted_Connection = falseは、暗号化=真; TrustServerCertificate =真

+1

:あなたがそれかどうかを確認するためにSSMSでそれを実行しようとした後、デバッグし、実際のCommandTextを得ることができますそこで働く? – astaykov

答えて

3

クラウドにいるにもかかわらず、SQL Serverタイムアウトのデバッグに関する通常の問題が適用されます。

私が見つけた主な違いは、SQL Azureは、クエリスピードとWebアプリケーションにデータを戻す速度の面で、一般に社内の専用サーバーよりも一般的に遅いということです。

  • インデックスを覚えておいてください:あなたはそれらを必要とします!
  • トレースをオンにして、実行中の実際のクエリを取得しようとします。クエリプラン(http://www.sql-server-performance.com/2006/query-execution-plan-analysis/を参照)を評価し、テーブル構造で実行できることが明らかであるかどうかを確認します。
  • SQL AzureインスタンスがWebロールと同じデータセンターにあることを確認してください。多くのデータを転送することは、データセンター間の速度が遅く(しかもコストがかかる)!
  • 多くのデータがデータベースから取得され、Webアプリケーションでのみフィルタリングされるパターンは避けてください。むしろ、データベースが「重労働」をしていることを確認してください。

また、あなたはたくさんごSQL Azureの接続が絞らなることがクエリのを実行している場合ことがあります。それへの参照はここにあります:http://msdn.microsoft.com/en-us/library/windowsazure/ff394106.aspx#throttling - しかし、それははっきりと異なるエラーコードを与えるので、私はそれがここの状況ではないと思っています。

0

SQL Azureでsimularタイムアウトが発生し、タイムアウトの原因となっていたセッション状態dbが判明しました。

セッション状態管理のためにAppFabricキャッシュに切り替えると、もはやタイムアウトが発生しなくなりました。ここ

詳細情報:umbraco.DataLayer.SqlHelper1.ExecuteReader(文字列CommandTextを、IParameter []パラメータ)で http://our.umbraco.org/forum/core/general/27179-SQL-Azure-connectivity-issues

関連する問題