/// <summary> /// Creates and opens a SQL connection. /// </summary> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> /// <remarks> /// The caller of this method is responsible for closing the connection. /// </remarks> private async Task <SqlConnection> CreateConnectionAsync(CancellationToken cancellationToken = default(CancellationToken)) { var con = new SqlConnection(ConnectionString); await con.OpenAsync(cancellationToken).ConfigureAwait(false); if (m_ServerDefaultSettings == null) { var temp = new SqlServerEffectiveSettings(); await temp.ReloadAsync(con, null); #if !Thread_Missing Thread.MemoryBarrier(); #endif m_ServerDefaultSettings = temp; } var sql = BuildConnectionSettingsOverride(); if (sql.Length > 0) { using (var cmd = new SqlCommand(sql.ToString(), con)) await cmd.ExecuteNonQueryAsync(); } return(con); }
public async Task <SqlServerEffectiveSettings> GetEffectiveSettingsAsync() { var result = new SqlServerEffectiveSettings(); using (var con = await CreateConnectionAsync()) await result.ReloadAsync(con, null); return(result); }
private partial async Task <AbstractConnection> OnCreateConnectionAsync(CancellationToken cancellationToken) { var con = new SqlConnection(ConnectionString); await con.OpenAsync(cancellationToken).ConfigureAwait(false); if (DatabaseMetadata.ServerDefaultSettings == null) { var temp = new SqlServerEffectiveSettings(); await temp.ReloadAsync(con, null).ConfigureAwait(false); Thread.MemoryBarrier(); DatabaseMetadata.ServerDefaultSettings = temp; } var sql = BuildConnectionSettingsOverride(); if (sql != null) { using (var cmd = new SqlCommand(sql, con)) await cmd.ExecuteNonQueryAsync().ConfigureAwait(false); } return(con); }