in src/SqlBindingUtilities.cs [348:409]
public static async Task<ServerProperties> GetServerTelemetryProperties(SqlConnection connection, ILogger logger, CancellationToken cancellationToken)
{
if (TelemetryInstance.Enabled)
{
try
{
string serverPropertiesQuery = $"SELECT SERVERPROPERTY('EngineEdition'), SERVERPROPERTY('Edition')";
using (var selectServerEditionCommand = new SqlCommand(serverPropertiesQuery, connection))
using (SqlDataReader reader = selectServerEditionCommand.ExecuteReaderWithLogging(logger))
{
if (await reader.ReadAsync(cancellationToken))
{
int engineEdition = reader.GetInt32(0);
var serverProperties = new ServerProperties() { Edition = reader.GetString(1) };
// Mapping information from
// https://learn.microsoft.com/en-us/sql/t-sql/functions/serverproperty-transact-sql?view=sql-server-ver16
switch (engineEdition)
{
case 1:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.DesktopEngine.ToString();
return serverProperties;
case 2:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.Standard.ToString();
return serverProperties;
case 3:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.Enterprise.ToString();
return serverProperties;
case 4:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.Express.ToString();
return serverProperties;
case 5:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.SQLDatabase.ToString();
return serverProperties;
case 6:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.AzureSynapseAnalytics.ToString();
return serverProperties;
case 8:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.AzureSQLManagedInstance.ToString();
return serverProperties;
case 9:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.AzureSQLEdge.ToString();
return serverProperties;
case 11:
serverProperties.EngineEdition = SqlBindingConstants.EngineEdition.AzureSynapseserverlessSQLpool.ToString();
return serverProperties;
default:
serverProperties.EngineEdition = engineEdition.ToString(System.Globalization.CultureInfo.InvariantCulture);
return serverProperties;
}
}
}
}
catch (Exception ex)
{
logger.LogError($"Exception in GetServerTelemetryProperties. Exception = {ex.Message}");
TelemetryInstance.TrackException(TelemetryErrorName.GetServerTelemetryProperties, ex);
return null;
}
}
return null;
}