Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit e017a93

Browse files
author
Christy Henriksson
authored
SQL auto rotation: Search.GenerateAuxillaryData (#421)
1 parent cd322cd commit e017a93

14 files changed

Lines changed: 119 additions & 262 deletions

src/Search.GenerateAuxiliaryData/App.config

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,33 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<startup>
4-
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
4+
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
55
</startup>
66
<runtime>
77
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
88
<dependentAssembly>
9-
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
10-
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
9+
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
10+
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0"/>
1111
</dependentAssembly>
1212
<dependentAssembly>
13-
<assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
14-
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
13+
<assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
14+
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0"/>
1515
</dependentAssembly>
1616
<dependentAssembly>
17-
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
18-
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
17+
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
18+
<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0"/>
1919
</dependentAssembly>
2020
<dependentAssembly>
21-
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
22-
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
21+
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
22+
<bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
2323
</dependentAssembly>
2424
<dependentAssembly>
25-
<assemblyIdentity name="Microsoft.Azure.KeyVault" publicKeyToken="31bf3856ad364e35" culture="neutral" />
26-
<bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
25+
<assemblyIdentity name="Microsoft.Azure.KeyVault" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
26+
<bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0"/>
2727
</dependentAssembly>
2828
<dependentAssembly>
29-
<assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory.Platform" publicKeyToken="31bf3856ad364e35" culture="neutral" />
30-
<bindingRedirect oldVersion="0.0.0.0-3.13.4.878" newVersion="3.13.4.878" />
31-
</dependentAssembly>
32-
<dependentAssembly>
33-
<assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" />
34-
<bindingRedirect oldVersion="0.0.0.0-3.13.4.878" newVersion="3.13.4.878" />
35-
</dependentAssembly>
36-
<dependentAssembly>
37-
<assemblyIdentity name="NuGet.Services.KeyVault" publicKeyToken="31bf3856ad364e35" culture="neutral" />
38-
<bindingRedirect oldVersion="0.0.0.0-2.2.3.0" newVersion="2.2.3.0" />
39-
</dependentAssembly>
40-
<dependentAssembly>
41-
<assemblyIdentity name="Microsoft.ApplicationInsights" publicKeyToken="31bf3856ad364e35" culture="neutral" />
42-
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
29+
<assemblyIdentity name="Microsoft.ApplicationInsights" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
30+
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0"/>
4331
</dependentAssembly>
4432
</assemblyBinding>
4533
</runtime>

src/Search.GenerateAuxiliaryData/BlobStorageExporter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public override async Task ExportAsync()
3636

3737
var sourceCloudBlob = _sourceContainer.GetBlockBlobReference(_sourceName);
3838
var destinationCloudBlob = _destinationContainer.GetBlockBlobReference(_name);
39-
39+
4040

4141
await destinationCloudBlob.StartCopyAsync(sourceCloudBlob);
4242

src/Search.GenerateAuxiliaryData/Job.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
using Microsoft.WindowsAzure.Storage;
1212
using Microsoft.WindowsAzure.Storage.Blob;
1313
using NuGet.Jobs;
14+
using NuGet.Services.KeyVault;
15+
using NuGet.Services.Sql;
1416

1517
namespace Search.GenerateAuxiliaryData
1618
{
@@ -43,11 +45,13 @@ internal class Job
4345

4446
public override void Init(IServiceContainer serviceContainer, IDictionary<string, string> jobArgsDictionary)
4547
{
46-
var packageDatabaseConnString = new SqlConnectionStringBuilder(
47-
JobConfigurationManager.GetArgument(jobArgsDictionary, JobArgumentNames.PackageDatabase)).ToString();
48+
var secretInjector = (ISecretInjector)serviceContainer.GetService(typeof(ISecretInjector));
4849

49-
var statisticsDatabaseConnString = new SqlConnectionStringBuilder(
50-
JobConfigurationManager.GetArgument(jobArgsDictionary, JobArgumentNames.StatisticsDatabase)).ToString();
50+
var packageDbConnectionString = JobConfigurationManager.GetArgument(jobArgsDictionary, JobArgumentNames.PackageDatabase);
51+
var packageDbConnectionFactory = new AzureSqlConnectionFactory(packageDbConnectionString, secretInjector);
52+
53+
var statisticsDbConnectionString = JobConfigurationManager.GetArgument(jobArgsDictionary, JobArgumentNames.StatisticsDatabase);
54+
var statisticsDbConnectionFactory = new AzureSqlConnectionFactory(statisticsDbConnectionString, secretInjector);
5155

5256
var statisticsStorageAccount = CloudStorageAccount.Parse(
5357
JobConfigurationManager.GetArgument(jobArgsDictionary, JobArgumentNames.AzureCdnCloudStorageAccount));
@@ -65,10 +69,10 @@ public override void Init(IServiceContainer serviceContainer, IDictionary<string
6569
_statisticsContainer = statisticsStorageAccount.CreateCloudBlobClient().GetContainerReference(statisticsReportsContainerName);
6670

6771
_exportersToRun = new List<Exporter> {
68-
new VerifiedPackagesExporter(LoggerFactory.CreateLogger<VerifiedPackagesExporter>(), packageDatabaseConnString, _destContainer, ScriptVerifiedPackages, OutputNameVerifiedPackages),
69-
new NestedJArrayExporter(LoggerFactory.CreateLogger<NestedJArrayExporter>(), packageDatabaseConnString, _destContainer, ScriptCuratedFeed, OutputNameCuratedFeed, Col0CuratedFeed, Col1CuratedFeed),
70-
new NestedJArrayExporter(LoggerFactory.CreateLogger<NestedJArrayExporter>(), packageDatabaseConnString, _destContainer, ScriptOwners, OutputNameOwners, Col0Owners, Col1Owners),
71-
new RankingsExporter(LoggerFactory.CreateLogger<RankingsExporter>(), statisticsDatabaseConnString, _destContainer, ScriptRankingsTotal, OutputNameRankings),
72+
new VerifiedPackagesExporter(LoggerFactory.CreateLogger<VerifiedPackagesExporter>(), packageDbConnectionFactory, _destContainer, ScriptVerifiedPackages, OutputNameVerifiedPackages),
73+
new NestedJArrayExporter(LoggerFactory.CreateLogger<NestedJArrayExporter>(), packageDbConnectionFactory, _destContainer, ScriptCuratedFeed, OutputNameCuratedFeed, Col0CuratedFeed, Col1CuratedFeed),
74+
new NestedJArrayExporter(LoggerFactory.CreateLogger<NestedJArrayExporter>(), packageDbConnectionFactory, _destContainer, ScriptOwners, OutputNameOwners, Col0Owners, Col1Owners),
75+
new RankingsExporter(LoggerFactory.CreateLogger<RankingsExporter>(), statisticsDbConnectionFactory, _destContainer, ScriptRankingsTotal, OutputNameRankings),
7276
new BlobStorageExporter(LoggerFactory.CreateLogger<BlobStorageExporter>(), _statisticsContainer, StatisticsReportName, _destContainer, StatisticsReportName)
7377
};
7478
}

src/Search.GenerateAuxiliaryData/NestedJArrayExporter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using Microsoft.Extensions.Logging;
1010
using Microsoft.WindowsAzure.Storage.Blob;
1111
using Newtonsoft.Json.Linq;
12+
using NuGet.Services.Sql;
1213

1314
namespace Search.GenerateAuxiliaryData
1415
{
@@ -19,8 +20,8 @@ class NestedJArrayExporter
1920
public string Col1 { get; }
2021
public string SqlScript { get; }
2122

22-
public NestedJArrayExporter(ILogger<NestedJArrayExporter> logger, string defaultConnectionString, CloudBlobContainer defaultDestinationContainer, string defaultSqlScript, string defaultName, string defaultCol0, string defaultCol1)
23-
: base(logger, defaultConnectionString, defaultDestinationContainer, defaultName)
23+
public NestedJArrayExporter(ILogger<NestedJArrayExporter> logger, ISqlConnectionFactory connectionFactory, CloudBlobContainer defaultDestinationContainer, string defaultSqlScript, string defaultName, string defaultCol0, string defaultCol1)
24+
: base(logger, connectionFactory, defaultDestinationContainer, defaultName)
2425
{
2526
Col0 = defaultCol0;
2627
Col1 = defaultCol1;

src/Search.GenerateAuxiliaryData/RankingsExporter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Microsoft.Extensions.Logging;
88
using Microsoft.WindowsAzure.Storage.Blob;
99
using Newtonsoft.Json.Linq;
10+
using NuGet.Services.Sql;
1011

1112
namespace Search.GenerateAuxiliaryData
1213
{
@@ -20,11 +21,11 @@ public sealed class RankingsExporter : SqlExporter
2021

2122
public RankingsExporter(
2223
ILogger<SqlExporter> logger,
23-
string defaultConnectionString,
24+
ISqlConnectionFactory connectionFactory,
2425
CloudBlobContainer defaultDestinationContainer,
2526
string defaultRankingsScript,
2627
string defaultName)
27-
: base(logger, defaultConnectionString, defaultDestinationContainer, defaultName)
28+
: base(logger, connectionFactory, defaultDestinationContainer, defaultName)
2829
{
2930
_rankingsTotalScript = defaultRankingsScript;
3031
}
Lines changed: 26 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
44
<PropertyGroup>
55
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -9,8 +9,9 @@
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>Search.GenerateAuxiliaryData</RootNamespace>
1111
<AssemblyName>Search.GenerateAuxiliaryData</AssemblyName>
12-
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
12+
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
1313
<FileAlignment>512</FileAlignment>
14+
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
1415
<TargetFrameworkProfile />
1516
<NuGetPackageImportStamp>
1617
</NuGetPackageImportStamp>
@@ -35,53 +36,14 @@
3536
<WarningLevel>4</WarningLevel>
3637
</PropertyGroup>
3738
<ItemGroup>
38-
<Reference Include="Microsoft.Azure.KeyVault.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
39-
<HintPath>..\..\packages\Microsoft.Azure.KeyVault.Core.1.0.0\lib\net40\Microsoft.Azure.KeyVault.Core.dll</HintPath>
40-
</Reference>
41-
<Reference Include="Microsoft.Data.Edm, Version=5.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
42-
<HintPath>..\..\packages\Microsoft.Data.Edm.5.7.0\lib\net40\Microsoft.Data.Edm.dll</HintPath>
43-
</Reference>
44-
<Reference Include="Microsoft.Data.OData, Version=5.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
45-
<HintPath>..\..\packages\Microsoft.Data.OData.5.7.0\lib\net40\Microsoft.Data.OData.dll</HintPath>
46-
</Reference>
47-
<Reference Include="Microsoft.Data.Services.Client, Version=5.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
48-
<HintPath>..\..\packages\Microsoft.Data.Services.Client.5.7.0\lib\net40\Microsoft.Data.Services.Client.dll</HintPath>
49-
</Reference>
50-
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
51-
<HintPath>..\..\packages\Microsoft.Extensions.Logging.Abstractions.1.0.0\lib\netstandard1.1\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
52-
</Reference>
53-
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
54-
<HintPath>..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
55-
</Reference>
56-
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
57-
<HintPath>..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
58-
</Reference>
59-
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
60-
<HintPath>..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
61-
</Reference>
62-
<Reference Include="Microsoft.WindowsAzure.Storage, Version=7.1.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
63-
<HintPath>..\..\packages\WindowsAzure.Storage.7.1.2\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
64-
</Reference>
65-
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
66-
<HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
67-
</Reference>
6839
<Reference Include="System" />
6940
<Reference Include="System.Core" />
7041
<Reference Include="Microsoft.CSharp" />
7142
<Reference Include="System.Data" />
7243
<Reference Include="System.IO" />
7344
<Reference Include="System.Net" />
7445
<Reference Include="System.Net.Http" />
75-
<Reference Include="System.Net.Http.Extensions, Version=2.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
76-
<HintPath>..\..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll</HintPath>
77-
</Reference>
78-
<Reference Include="System.Net.Http.Primitives, Version=4.2.29.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
79-
<HintPath>..\..\packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll</HintPath>
80-
</Reference>
8146
<Reference Include="System.Net.Http.WebRequest" />
82-
<Reference Include="System.Spatial, Version=5.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
83-
<HintPath>..\..\packages\System.Spatial.5.7.0\lib\net40\System.Spatial.dll</HintPath>
84-
</Reference>
8547
</ItemGroup>
8648
<ItemGroup>
8749
<Compile Include="BlobStorageExporter.cs" />
@@ -97,7 +59,6 @@
9759
</ItemGroup>
9860
<ItemGroup>
9961
<None Include="App.config" />
100-
<None Include="packages.config" />
10162
<None Include="Scripts\*" />
10263
<None Include="Search.GenerateAuxiliaryData.nuspec" />
10364
</ItemGroup>
@@ -119,20 +80,29 @@
11980
<ItemGroup>
12081
<EmbeddedResource Include="SqlScripts\VerifiedPackages.sql" />
12182
</ItemGroup>
83+
<ItemGroup>
84+
<PackageReference Include="Microsoft.Data.Edm">
85+
<Version>5.7.0</Version>
86+
</PackageReference>
87+
<PackageReference Include="Microsoft.Data.OData">
88+
<Version>5.7.0</Version>
89+
</PackageReference>
90+
<PackageReference Include="Microsoft.Data.Services.Client">
91+
<Version>5.7.0</Version>
92+
</PackageReference>
93+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions">
94+
<Version>1.0.0</Version>
95+
</PackageReference>
96+
<PackageReference Include="Newtonsoft.Json">
97+
<Version>9.0.1</Version>
98+
</PackageReference>
99+
<PackageReference Include="NuGet.Services.Sql">
100+
<Version>2.25.0-master-30453</Version>
101+
</PackageReference>
102+
<PackageReference Include="WindowsAzure.Storage">
103+
<Version>7.1.2</Version>
104+
</PackageReference>
105+
</ItemGroup>
122106
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
123107
<Import Project="..\..\build\sign.targets" Condition="Exists('..\..\build\sign.targets')" />
124-
<Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />
125-
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
126-
<PropertyGroup>
127-
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
128-
</PropertyGroup>
129-
<Error Condition="!Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />
130-
</Target>
131-
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
132-
Other similar extension points exist, see Microsoft.Common.targets.
133-
<Target Name="BeforeBuild">
134-
</Target>
135-
<Target Name="AfterBuild">
136-
</Target>
137-
-->
138108
</Project>

src/Search.GenerateAuxiliaryData/SqlExporter.cs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Microsoft.WindowsAzure.Storage.Blob;
1212
using Newtonsoft.Json;
1313
using Newtonsoft.Json.Linq;
14+
using NuGet.Services.Sql;
1415

1516
namespace Search.GenerateAuxiliaryData
1617
{
@@ -20,13 +21,13 @@ public abstract class SqlExporter : Exporter
2021
private static Assembly _executingAssembly = Assembly.GetExecutingAssembly();
2122
private static string _assemblyName = _executingAssembly.GetName().Name;
2223

23-
public string ConnectionString { get; }
24+
public ISqlConnectionFactory ConnectionFactory { get; }
2425

25-
public SqlExporter(ILogger<SqlExporter> logger, string defaultConnectionString, CloudBlobContainer defaultDestinationContainer, string defaultName)
26+
public SqlExporter(ILogger<SqlExporter> logger, ISqlConnectionFactory connectionFactory, CloudBlobContainer defaultDestinationContainer, string defaultName)
2627
: base(logger, defaultDestinationContainer, defaultName)
2728
{
2829
_logger = logger;
29-
ConnectionString = defaultConnectionString;
30+
ConnectionFactory = connectionFactory;
3031
}
3132

3233
protected static string GetEmbeddedSqlScript(string resourceName)
@@ -37,13 +38,12 @@ protected static string GetEmbeddedSqlScript(string resourceName)
3738

3839
public override async Task ExportAsync()
3940
{
40-
_logger.LogInformation("Generating {ReportName} report from {ConnectionString}.", _name, TracableConnectionString(ConnectionString));
41+
_logger.LogInformation("Generating {ReportName} report from {DataSource}/{InitialCatalog}.",
42+
_name, ConnectionFactory.DataSource, ConnectionFactory.InitialCatalog);
4143

4244
JContainer result;
43-
using (var connection = new SqlConnection(ConnectionString))
45+
using (var connection = await ConnectionFactory.CreateAsync())
4446
{
45-
connection.Open();
46-
4747
result = GetResultOfQuery(connection);
4848
}
4949

@@ -62,14 +62,6 @@ protected static Dictionary<string, int> GetColMappingFromSqlDataReader(IDataRea
6262
return colNames;
6363
}
6464

65-
private static string TracableConnectionString(string connectionString)
66-
{
67-
var connStr = new SqlConnectionStringBuilder(connectionString);
68-
connStr.UserID = "########";
69-
connStr.Password = "########";
70-
return connStr.ToString();
71-
}
72-
7365
private static async Task WriteToBlobAsync(ILogger<Exporter> logger, CloudBlobContainer container, string content, string name)
7466
{
7567
await container.CreateIfNotExistsAsync();

0 commit comments

Comments
 (0)