Changed logic to use database name provided by connectionString (#1091)

This commit is contained in:
Justin M
2020-10-06 20:45:54 -07:00
committed by GitHub
parent f2eb590d97
commit a94ab9d8b4

View File

@@ -42,9 +42,8 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
{
_ownerUri = ownerUri;
ClusterName = GetClusterName(connectionString);
var databaseName = new SqlConnectionStringBuilder(connectionString).InitialCatalog;
Initialize(ClusterName, databaseName, azureAccountToken);
DatabaseName = string.IsNullOrWhiteSpace(databaseName) ? GetFirstDatabaseName() : databaseName;
DatabaseName = new SqlConnectionStringBuilder(connectionString).InitialCatalog;
Initialize(ClusterName, DatabaseName, azureAccountToken);
SchemaState = LoadSchemaState();
}
@@ -147,25 +146,6 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
return kcsb;
}
/// <summary>
/// Extracts the database name from the connectionString if it exists
/// otherwise it takes the first database name from the server
/// </summary>
/// <param name="connectionString"></param>
/// <returns>Database Name</returns>
private string GetFirstDatabaseName()
{
var source = new CancellationTokenSource();
string query = ".show databases | project DatabaseName";
using (var reader = ExecuteQuery(query, source.Token))
{
var rows = reader.ToEnumerable();
var row = rows?.FirstOrDefault();
return row?[0].ToString() ?? string.Empty;
}
}
public IDataReader ExecuteQuery(string query, CancellationToken cancellationToken, string databaseName = null, int retryCount = 1)
{
ValidationUtils.IsArgumentNotNullOrWhiteSpace(query, nameof(query));