首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >超时已过期。在Azure sql上的操作完成之前已过超时时间

超时已过期。在Azure sql上的操作完成之前已过超时时间
EN

Stack Overflow用户
提问于 2015-07-15 00:42:19
回答 3查看 14.5K关注 0票数 4

我需要在global.asax应用程序启动事件时在windows azure上创建一个sql数据库,但是我得到了这个错误:

代码语言:javascript
运行
复制
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;

我的代码如下:

代码语言:javascript
运行
复制
   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;
            }
        }

如何提高timeout>?是sql超时还是由于sql没有响应而导致web请求超时?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-15 07:39:24

您可以通过执行以下操作来设置命令超时,您看到的错误是命令超时,很可能create DB花费的时间超过了默认超时值30秒。

例如,将超时设置为300秒cmd.CommandTimeout = 300

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

票数 7
EN

Stack Overflow用户

发布于 2016-06-24 23:08:48

当我们遇到这个问题时,事实证明我们的数据库动力不足。性能监视器显示,在我们收到错误期间,DTU已达到最大容量。Azure SQL Database Operation Timeout

票数 4
EN

Stack Overflow用户

发布于 2021-10-19 10:31:53

除了@Satya_MSFTs解释之外,您还可以将命令超时添加到连接字符串中,如果您的驱动程序支持它的话。可能看起来像这样(在ADO.NET语法中):

代码语言:javascript
运行
复制
_connectionString = "Server=tcp:myenv.database.windows.net,1433;Database=mydb;User ID=myuserid;Password=mypassword;Encrypt=true;Connection Timeout=120;Command Timeout=120;"

然后可以像这样在Microsoft.Data.SqlClient.SqlConnection中使用它:

代码语言:javascript
运行
复制
await using var conn = new SqlConnection(_connectionString);

就像其他人说的,你应该在走这条路之前试着调优你的数据库。(在OPs的情况下不是。如果是一次性设置操作,可以增加超时时间,然后再减少超时时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31412577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档