4

global.asax アプリケーション開始イベントで Windows azure に 1 つの SQL データベースを作成する必要がありますが、次のエラーが発生しました。

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.  This failure occurred while attempting to connect to the routing destination. The duration spent while attempting to connect to the original server was - [Pre-Login] initialization=296; handshake=324; [Login] initialization=0; authentication=1; [Post-Login] complete=94;

私のコードは次のとおりです。

   private void SetupSSM() {
            SqlConnectionStringBuilder connStrBldr = new SqlConnectionStringBuilder
            {
                UserID = SettingsHelper.AzureUsernamedb,
                Password = SettingsHelper.AzurePasswordDb,
                ApplicationName = SettingsHelper.AzureApplicationName,
                DataSource = SettingsHelper.AzureSqlServer
            };

            bool created=DbUtils.CreateDatabaseIfNotExists(connStrBldr.ConnectionString, SettingsHelper.Azureshardmapmgrdb);
            if(created)
            {
                Sharding sharding = new Sharding(SettingsHelper.AzureSqlServer, SettingsHelper.Azureshardmapmgrdb, connStrBldr.ConnectionString);
            }
        }



  public static bool CreateDatabaseIfNotExists(string connectionString, string databaseName)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();

                SqlCommand cmd = new SqlCommand(
                    string.Format("SELECT * FROM sys.databases WHERE [name]=\'{0:S}\'", databaseName),
                    conn);

                if (cmd.ExecuteScalar() == null)
                {
                    SqlCommand cmd2 = new SqlCommand(
                        string.Format("CREATE DATABASE [{0:S}];", databaseName),
                        conn);

                    cmd2.ExecuteNonQuery();

                    return true;
                }
                else
                    return false;
            }
        }

どうすればタイムアウトを増やすことができますか? SQLが応答しないため、SQLタイムアウトまたはWebリクエストタイムアウトですか?

4

3 に答える 3

7

次のようにしてコマンド タイムアウトを設定できます。表示されているエラーはコマンド タイムアウトです。ほとんどの場合、DB の作成にデフォルトのタイムアウト値である 30 秒より長くかかっています。

たとえば、タイムアウトを 300 秒に設定します cmd.CommandTimeout = 300

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout(v=vs.110).aspx

于 2015-07-14T23:39:23.997 に答える
4

この問題が発生したとき、データベースの能力が不足していたことが判明しました。パフォーマンス モニターは、エラーが発生している間に DTU が限界に達したことを示しました。 Azure SQL データベース操作のタイムアウト

于 2016-06-24T15:08:47.827 に答える