public static async Task GetServerTelemetryProperties()

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;
        }