Azure / Azure/azure-functions-sql-extension
Can't use `Azure App Configuration` as a source for `ConnectionStringSetting`
- Dominant language
- C#
- Stars
- 130
- Forks
- 71
- Avg merge
- 4d 8h
- Merged PRs (30d)
- 4
Description
- Azure Functions SQL Extension or Extension Bundle Version:
c# net8 isolated function
Microsoft.Azure.Functions.Worker.Extensions.Sql;3.1.284
- Is this a deployed or local function: either
- What type of Database are you using? (Run `SELECT @@VERSION as Version, SERVERPROPERTY('EngineEdition') as EngineEdition` on your database)
deployed: Microsoft SQL Azure (RTM) - 12.0.2000.8
Oct 2 2024 11:51:41
Copyright (C) 2022 Microsoft Corporation, 5
local: Version EngineEdition
Microsoft SQL Server 2019 (RTM-CU27-GDR) (KB5040948) - 15.0.4382.1 (X64)
Jul 1 2024 20:03:23
Copyright (C) 2019 Microsoft Corporation
Express Edition (64-bit) on Windows 10 Enterprise 10.0 (Build 22621: ) (Hypervisor), 4
- List any custom settings for your function app. This could be a custom time-out defined specifically for your database server or optional configuration that can be customized for the app defined [here](https://learn.microsoft.com/azure/azure-functions/functions-bindings-azure-sql-trigger?tabs=isolated-process%2Cportal&pivots=programming-language-csharp#optional-configuration).
no custom settings
Steps to Reproduce:
1. add App Configuration instance to IConfigation
Program.cs
```csharp
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureAppConfiguration(
builder =>
{
var config = builder.Build();
builder.AddAzureAppConfiguration(options =>
{
options.Connect(config["AppConfigConnectionString"]);
});
})
.Build();
host.Run();
```
3. specify key that is defined in Azure App Configuration
CollectEvents.cs
```csharp
using Azure.Messaging.EventGrid;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace Test;
public class CollectEvents
{
private readonly ILogger _logger;
private readonly IConfiguration _config;
public CollectEvents(ILogger logger, IConfiguration config)
{
_logger = logger;
_config = config;
}
[Function("CollectEvents")]
[SqlOutput("Operations.ActivityLog",
"SqlConnectionString" // complains about missing connection string
)]
public ActivityLog Run([EventGridTrigger] EventGridEvent eventGridEvent)
{
_logger.LogInformation("SqlConnectionString: {SqlConnectionString}",
_config["SqlConnectionString"]); // outputs expected connection string
var log = new ActivityLog
{
Id = eventGridEvent.Id,
EventTime = eventGridEvent.EventTime,
EventType = eventGridEvent.EventType,
Subject = eventGridEvent.Subject,
DataVersion = eventGridEvent.DataVersion,
Topic = eventGridEvent.Topic,
};
return log;
}
}
public class ActivityLog
{
public string Id { get; set; } = null!;
public DateTimeOffset EventTime { get; set; }
public string EventType { get; set; } = null!;
public string Subject { get; set; } = null!;
public string DataVersion { get; set; } = null!;
public string? Topic { get; set; }
}
```
Contributor guide
Research direction
Reproduce the issue using the Program.cs Azure App Configuration setup and the CollectEvents.cs SqlOutput binding shown in the report, in either the local or deployed configuration. Trace how the SqlConnectionString setting is resolved; the work is done when the key supplied by Azure App Configuration is accepted by the SQL output binding without a missing-connection-string error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, csharp, sql
- Domain
- backend, cloud, database
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100