我需要在windows azure上创建一个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请求超时?
您可以通过以下方式设置命令超时,您看到的错误是命令超时,很可能您的创建DB花费的时间超过了默认超时值30秒。
例如,设置timeout为300秒cmd。CommandTimeout = 300
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout (v = vs.110) . aspx
当我们遇到这个问题时,结果是我们的数据库功能不足。性能监视器显示,在我们得到错误的时候,DTU已经达到了最大值。Azure SQL数据库操作超时时间
除了@Satya_MSFTs解释之外,如果您的驱动程序支持,您可以将命令超时添加到连接字符串中。在ADO中可能看起来像这样。净语法):
_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
中使用,例如:
await using var conn = new SqlConnection(_connectionString);
就像其他人说的那样,在您这样做之前,您应该尝试优化您的数据库。(不是在OPs的情况下。如果是一次性设置操作,可以增加超时时间,然后再减少(imo)