Tiempos de espera de SQL en la ventana acoplable

programación

[ad_1]

Tengo pruebas en ejecución que utilizan una base de datos SQL alojada en Docker. Tengo problemas de tiempo de espera en algunas pruebas.

var msSqlContainer = new ContainerBuilder()
	.WithImage("mcr.microsoft.com/mssql/server:2017-latest")
	.WithName(Guid.NewGuid().ToString()[..5])
	.WithPortBinding(1433, true)
	.WithEnvironment("ACCEPT_EULA", "Y")
	.WithEnvironment("SQLCMDUSER", "sa")
	.WithEnvironment("MSSQL_SA_PASSWORD", password)
	.WithEnvironment("SQLCMDPASSWORD", password)
	.WithCleanUp(true)
	.WithNetwork(network)
	.WithWaitStrategy(Wait.ForUnixContainer().UntilPortIsAvailable(1433))
	.Build();
await msSqlContainer.StartAsync();

var msSqlPort = msSqlContainer.GetMappedPublicPort(1433);

_databaseConnectionString = $"Server={msSqlContainer.Hostname},{msSqlPort};User Id=sa;Password={password};TrustServerCertificate=true;";
Timeout after 239.3025928 calling database. Caller:get_cust_messages_by_cust Message:Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

Lo que he probado:

Intenté agregar ‘Tiempo de espera de conexión = 60’ a la cadena de conexión

Compruebo cuántas conexiones tengo usando la siguiente consulta, que siempre tengo menos de 30 conexiones

SELECT a.*
FROM
(SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame) a
ORDER BY a.DBName, a.LoginName

Solución 1

Sí, estoy seguro de que se pudo acceder a la base de datos. De 3000 pruebas, algunas fallan aleatoriamente con tiempos de espera de Sql.

A continuación se muestra el método que estoy usando para abrir la conexión DB

private DbConnection GetDBConnection()
{
    var db = _sqlDBfactory.CreateConnection();
    db!.ConnectionString = _databaseConnectionString + "Initial Catalog=clients;";
    db.Open();
    return db;
}

Ejemplo de llamada:

using var db = GetDBConnection();
try
{
	return db.QueryFirst<string>(
		$"SELECT statment goes here... omitted purposly;
}
finally
{
	db.Close();
}

[ad_2]

コメント

Título y URL copiados