diff --git a/Packages.props b/Packages.props
index 243133be..222f8e0a 100644
--- a/Packages.props
+++ b/Packages.props
@@ -20,8 +20,8 @@
-
-
+
+
diff --git a/src/Microsoft.Kusto.ServiceLayer/Connection/ConnectionService.cs b/src/Microsoft.Kusto.ServiceLayer/Connection/ConnectionService.cs
index 4879e2e7..2f429488 100644
--- a/src/Microsoft.Kusto.ServiceLayer/Connection/ConnectionService.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/Connection/ConnectionService.cs
@@ -19,6 +19,7 @@ using Microsoft.Kusto.ServiceLayer.LanguageServices.Contracts;
using Microsoft.Kusto.ServiceLayer.Utility;
using Microsoft.SqlTools.Utility;
using System.Diagnostics;
+using Kusto.Data;
using Microsoft.Kusto.ServiceLayer.DataSource;
using Microsoft.Kusto.ServiceLayer.DataSource.Metadata;
using Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection;
@@ -30,7 +31,6 @@ namespace Microsoft.Kusto.ServiceLayer.Connection
///
public class ConnectionService
{
- private const string AdminConnectionPrefix = "ADMIN:";
private const string PasswordPlaceholder = "******";
///
@@ -389,7 +389,7 @@ namespace Microsoft.Kusto.ServiceLayer.Connection
if (!string.IsNullOrEmpty(connectionInfo.ConnectionDetails.ConnectionString))
{
// If the connection was set up with a connection string, use the connection string to get the details
- var connectionString = new SqlConnectionStringBuilder(connection.ConnectionString);
+ var connectionString = new KustoConnectionStringBuilder(connection.ConnectionString);
response.ConnectionSummary = new ConnectionSummary
{
ServerName = connectionString.DataSource,
@@ -548,19 +548,11 @@ namespace Microsoft.Kusto.ServiceLayer.Connection
{
throw new InvalidOperationException(SR.ConnectionServiceDbErrorDefaultNotConnected(ownerUri));
}
-
- if (IsDedicatedAdminConnection(connectionInfo.ConnectionDetails))
+
+ // Try to get the ReliableDataSourceClient and create if it doesn't already exist
+ if (!connectionInfo.TryGetConnection(connectionType, out connection) && ConnectionType.Default != connectionType)
{
- // Since this is a dedicated connection only 1 is allowed at any time. Return the default connection for use in the requested action
- connection = defaultConnection;
- }
- else
- {
- // Try to get the ReliableDataSourceClient and create if it doesn't already exist
- if (!connectionInfo.TryGetConnection(connectionType, out connection) && ConnectionType.Default != connectionType)
- {
- connection = await TryOpenConnectionForConnectionType(ownerUri, connectionType, alwaysPersistSecurity, connectionInfo);
- }
+ connection = await TryOpenConnectionForConnectionType(ownerUri, connectionType, alwaysPersistSecurity, connectionInfo);
}
return connection;
@@ -963,18 +955,6 @@ namespace Microsoft.Kusto.ServiceLayer.Connection
}
}
- ///
- /// Checks if a ConnectionDetails object represents a DAC connection
- ///
- ///
- public static bool IsDedicatedAdminConnection(ConnectionDetails connectionDetails)
- {
- Validate.IsNotNull(nameof(connectionDetails), connectionDetails);
- SqlConnectionStringBuilder builder = CreateConnectionStringBuilder(connectionDetails);
- string serverName = builder.DataSource;
- return serverName != null && serverName.StartsWith(AdminConnectionPrefix, StringComparison.OrdinalIgnoreCase);
- }
-
///
/// Build a connection string from a connection details instance
///
@@ -988,152 +968,13 @@ namespace Microsoft.Kusto.ServiceLayer.Connection
/// Build a connection string builder a connection details instance
///
///
- private static SqlConnectionStringBuilder CreateConnectionStringBuilder(ConnectionDetails connectionDetails)
+ private static KustoConnectionStringBuilder CreateConnectionStringBuilder(ConnectionDetails connectionDetails)
{
- SqlConnectionStringBuilder connectionBuilder;
+ var stringBuilder = string.IsNullOrWhiteSpace(connectionDetails.ConnectionString)
+ ? new KustoConnectionStringBuilder(connectionDetails.ServerName, connectionDetails.DatabaseName)
+ : new KustoConnectionStringBuilder(connectionDetails.ConnectionString);
- // If connectionDetails has a connection string already, use it to initialize the connection builder, then override any provided options.
- // Otherwise use the server name, username, and password from the connection details.
- if (!string.IsNullOrEmpty(connectionDetails.ConnectionString))
- {
- connectionBuilder = new SqlConnectionStringBuilder(connectionDetails.ConnectionString);
- }
- else
- {
- // add alternate port to data source property if provided
- string dataSource = !connectionDetails.Port.HasValue
- ? connectionDetails.ServerName
- : string.Format("{0},{1}", connectionDetails.ServerName, connectionDetails.Port.Value);
-
- connectionBuilder = new SqlConnectionStringBuilder
- {
- ["Data Source"] = dataSource,
- ["User Id"] = connectionDetails.UserName,
- ["Password"] = connectionDetails.Password
- };
- }
-
- // Check for any optional parameters
- if (!string.IsNullOrEmpty(connectionDetails.DatabaseName))
- {
- connectionBuilder["Initial Catalog"] = connectionDetails.DatabaseName;
- }
- if (!string.IsNullOrEmpty(connectionDetails.AuthenticationType))
- {
- switch (connectionDetails.AuthenticationType)
- {
- case "Integrated":
- connectionBuilder.IntegratedSecurity = true;
- break;
- case "SqlLogin":
- break;
- case "AzureMFA":
- connectionBuilder.UserID = "";
- connectionBuilder.Password = "";
- break;
- default:
- throw new ArgumentException(SR.ConnectionServiceConnStringInvalidAuthType(connectionDetails.AuthenticationType));
- }
- }
- if (connectionDetails.Encrypt.HasValue)
- {
- connectionBuilder.Encrypt = connectionDetails.Encrypt.Value;
- }
- if (connectionDetails.TrustServerCertificate.HasValue)
- {
- connectionBuilder.TrustServerCertificate = connectionDetails.TrustServerCertificate.Value;
- }
- if (connectionDetails.PersistSecurityInfo.HasValue)
- {
- connectionBuilder.PersistSecurityInfo = connectionDetails.PersistSecurityInfo.Value;
- }
- if (connectionDetails.ConnectTimeout.HasValue)
- {
- connectionBuilder.ConnectTimeout = connectionDetails.ConnectTimeout.Value;
- }
- if (connectionDetails.ConnectRetryCount.HasValue)
- {
- connectionBuilder.ConnectRetryCount = connectionDetails.ConnectRetryCount.Value;
- }
- if (connectionDetails.ConnectRetryInterval.HasValue)
- {
- connectionBuilder.ConnectRetryInterval = connectionDetails.ConnectRetryInterval.Value;
- }
- if (!string.IsNullOrEmpty(connectionDetails.ApplicationName))
- {
- connectionBuilder.ApplicationName = connectionDetails.ApplicationName;
- }
- if (!string.IsNullOrEmpty(connectionDetails.WorkstationId))
- {
- connectionBuilder.WorkstationID = connectionDetails.WorkstationId;
- }
- if (!string.IsNullOrEmpty(connectionDetails.ApplicationIntent))
- {
- ApplicationIntent intent;
- switch (connectionDetails.ApplicationIntent)
- {
- case "ReadOnly":
- intent = ApplicationIntent.ReadOnly;
- break;
- case "ReadWrite":
- intent = ApplicationIntent.ReadWrite;
- break;
- default:
- throw new ArgumentException(SR.ConnectionServiceConnStringInvalidIntent(connectionDetails.ApplicationIntent));
- }
- connectionBuilder.ApplicationIntent = intent;
- }
- if (!string.IsNullOrEmpty(connectionDetails.CurrentLanguage))
- {
- connectionBuilder.CurrentLanguage = connectionDetails.CurrentLanguage;
- }
- if (connectionDetails.Pooling.HasValue)
- {
- connectionBuilder.Pooling = connectionDetails.Pooling.Value;
- }
- if (connectionDetails.MaxPoolSize.HasValue)
- {
- connectionBuilder.MaxPoolSize = connectionDetails.MaxPoolSize.Value;
- }
- if (connectionDetails.MinPoolSize.HasValue)
- {
- connectionBuilder.MinPoolSize = connectionDetails.MinPoolSize.Value;
- }
- if (connectionDetails.LoadBalanceTimeout.HasValue)
- {
- connectionBuilder.LoadBalanceTimeout = connectionDetails.LoadBalanceTimeout.Value;
- }
- if (connectionDetails.Replication.HasValue)
- {
- connectionBuilder.Replication = connectionDetails.Replication.Value;
- }
- if (!string.IsNullOrEmpty(connectionDetails.AttachDbFilename))
- {
- connectionBuilder.AttachDBFilename = connectionDetails.AttachDbFilename;
- }
- if (!string.IsNullOrEmpty(connectionDetails.FailoverPartner))
- {
- connectionBuilder.FailoverPartner = connectionDetails.FailoverPartner;
- }
- if (connectionDetails.MultiSubnetFailover.HasValue)
- {
- connectionBuilder.MultiSubnetFailover = connectionDetails.MultiSubnetFailover.Value;
- }
- if (connectionDetails.MultipleActiveResultSets.HasValue)
- {
- connectionBuilder.MultipleActiveResultSets = connectionDetails.MultipleActiveResultSets.Value;
- }
- if (connectionDetails.PacketSize.HasValue)
- {
- connectionBuilder.PacketSize = connectionDetails.PacketSize.Value;
- }
- if (!string.IsNullOrEmpty(connectionDetails.TypeSystemVersion))
- {
- connectionBuilder.TypeSystemVersion = connectionDetails.TypeSystemVersion;
- }
- connectionBuilder.Pooling = false;
-
- return connectionBuilder;
+ return stringBuilder.WithAadUserTokenAuthentication(connectionDetails.AzureAccountToken);
}
///
@@ -1194,38 +1035,15 @@ namespace Microsoft.Kusto.ServiceLayer.Connection
public ConnectionDetails ParseConnectionString(string connectionString)
{
- SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connectionString);
- ConnectionDetails details = new ConnectionDetails()
+ var builder = new KustoConnectionStringBuilder(connectionString);
+ return new ConnectionDetails
{
- ApplicationIntent = builder.ApplicationIntent.ToString(),
- ApplicationName = builder.ApplicationName,
- AttachDbFilename = builder.AttachDBFilename,
- AuthenticationType = builder.IntegratedSecurity ? "Integrated" : "SqlLogin",
- ConnectRetryCount = builder.ConnectRetryCount,
- ConnectRetryInterval = builder.ConnectRetryInterval,
- ConnectTimeout = builder.ConnectTimeout,
- CurrentLanguage = builder.CurrentLanguage,
+ ApplicationName = builder.ApplicationNameForTracing,
+ AuthenticationType = "AzureMFA",
DatabaseName = builder.InitialCatalog,
- Encrypt = builder.Encrypt,
- FailoverPartner = builder.FailoverPartner,
- LoadBalanceTimeout = builder.LoadBalanceTimeout,
- MaxPoolSize = builder.MaxPoolSize,
- MinPoolSize = builder.MinPoolSize,
- MultipleActiveResultSets = builder.MultipleActiveResultSets,
- MultiSubnetFailover = builder.MultiSubnetFailover,
- PacketSize = builder.PacketSize,
- Password = !builder.IntegratedSecurity ? builder.Password : string.Empty,
- PersistSecurityInfo = builder.PersistSecurityInfo,
- Pooling = builder.Pooling,
- Replication = builder.Replication,
ServerName = builder.DataSource,
- TrustServerCertificate = builder.TrustServerCertificate,
- TypeSystemVersion = builder.TypeSystemVersion,
UserName = builder.UserID,
- WorkstationId = builder.WorkstationID,
};
-
- return details;
}
///
diff --git a/src/Microsoft.Kusto.ServiceLayer/DataSource/DataSourceIntellisense/KustoIntellisenseHelper.cs b/src/Microsoft.Kusto.ServiceLayer/DataSource/DataSourceIntellisense/KustoIntellisenseHelper.cs
index 42929fd2..d5533106 100644
--- a/src/Microsoft.Kusto.ServiceLayer/DataSource/DataSourceIntellisense/KustoIntellisenseHelper.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/DataSource/DataSourceIntellisense/KustoIntellisenseHelper.cs
@@ -117,8 +117,11 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource.DataSourceIntellisense
var query = "let fn = " + parameters + " { };";
var code = KustoCode.ParseAndAnalyze(query);
var let = code.Syntax.GetFirstDescendant();
- var variable = let.Name.ReferencedSymbol as VariableSymbol;
- var function = variable.Type as FunctionSymbol;
+
+ FunctionSymbol function = let.Name.ReferencedSymbol is VariableSymbol variable
+ ? variable.Type as FunctionSymbol
+ : let.Name.ReferencedSymbol as FunctionSymbol;
+
return function.Signatures[0].Parameters;
}
diff --git a/src/Microsoft.Kusto.ServiceLayer/DataSource/KustoClient.cs b/src/Microsoft.Kusto.ServiceLayer/DataSource/KustoClient.cs
index aea3b446..e82b8fe1 100644
--- a/src/Microsoft.Kusto.ServiceLayer/DataSource/KustoClient.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/DataSource/KustoClient.cs
@@ -14,7 +14,6 @@ using Kusto.Data.Exceptions;
using Kusto.Data.Net.Client;
using Kusto.Language;
using Kusto.Language.Editor;
-using Microsoft.Data.SqlClient;
using Microsoft.Kusto.ServiceLayer.Connection;
using Microsoft.Kusto.ServiceLayer.DataSource.DataSourceIntellisense;
using Microsoft.Kusto.ServiceLayer.Utility;
@@ -36,26 +35,21 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
///
public GlobalState SchemaState { get; private set; }
- public string ClusterName { get; }
+ public string ClusterName { get; private set; }
public string DatabaseName { get; private set; }
public KustoClient(string connectionString, string azureAccountToken, string ownerUri)
{
_ownerUri = ownerUri;
- ClusterName = GetClusterName(connectionString);
-
- var dbName = new SqlConnectionStringBuilder(connectionString).InitialCatalog;
- SetDatabaseName(dbName);
-
- Initialize(ClusterName, DatabaseName, azureAccountToken);
+ Initialize(azureAccountToken, connectionString);
SchemaState = LoadSchemaState();
}
- private void SetDatabaseName(string databaseName)
+ private string ParseDatabaseName(string databaseName)
{
var regex = new Regex(@"(?<=\().+?(?=\))");
- DatabaseName = regex.IsMatch(databaseName)
+ return regex.IsMatch(databaseName)
? regex.Match(databaseName).Value
: databaseName;
}
@@ -85,9 +79,9 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
DatabaseName, ClusterName);
}
- private void Initialize(string clusterName, string databaseName, string azureAccountToken)
+ private void Initialize(string azureAccountToken, string connectionString = "")
{
- var stringBuilder = GetKustoConnectionStringBuilder(clusterName, databaseName, azureAccountToken, "", "");
+ var stringBuilder = GetKustoConnectionStringBuilder(azureAccountToken, connectionString);
_kustoQueryProvider = KustoClientFactory.CreateCslQueryProvider(stringBuilder);
_kustoAdminProvider = KustoClientFactory.CreateCslAdminProvider(stringBuilder);
}
@@ -97,68 +91,26 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
string azureAccountToken = ConnectionService.Instance.RefreshAzureToken(_ownerUri);
_kustoQueryProvider.Dispose();
_kustoAdminProvider.Dispose();
- Initialize(ClusterName, DatabaseName, azureAccountToken);
+ Initialize(azureAccountToken);
}
- ///
- /// Extracts the cluster name from the connectionstring. The string looks like the following:
- /// "Data Source=clustername.kusto.windows.net;User ID=;Password=;Pooling=False;Application Name=azdata-GeneralConnection"
- ///
- /// A connection string coming over the Data management protocol
- private string GetClusterName(string connectionString)
+ private KustoConnectionStringBuilder GetKustoConnectionStringBuilder(string userToken, string connectionString)
{
- var csb = new SqlConnectionStringBuilder(connectionString);
+ ValidationUtils.IsTrue(!string.IsNullOrWhiteSpace(userToken),
+ $"the Kusto authentication is not specified - either set {nameof(userToken)}");
- // If there is no https:// prefix, add it
- Uri uri;
- if ((Uri.TryCreate(csb.DataSource, UriKind.Absolute, out uri) ||
- Uri.TryCreate("https://" + csb.DataSource, UriKind.Absolute, out uri)) &&
- (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps))
- {
- return uri.AbsoluteUri;
- }
-
- throw new ArgumentException("Expected a URL of the form clustername.kusto.windows.net");
- }
-
- private KustoConnectionStringBuilder GetKustoConnectionStringBuilder(string clusterName, string databaseName,
- string userToken, string applicationClientId, string applicationKey)
- {
- ValidationUtils.IsNotNull(clusterName, nameof(clusterName));
- ValidationUtils.IsTrue(
- !string.IsNullOrWhiteSpace(userToken)
- || (!string.IsNullOrWhiteSpace(applicationClientId) && !string.IsNullOrWhiteSpace(applicationKey)),
- $"the Kusto authentication is not specified - either set {nameof(userToken)}, or set {nameof(applicationClientId)} and {nameof(applicationKey)}");
-
- var kcsb = new KustoConnectionStringBuilder
- {
- DataSource = clusterName,
-
- // Perform federated auth based on the AAD user token, or based on the AAD application client id and key.
- FederatedSecurity = true
- };
-
- if (!string.IsNullOrWhiteSpace(databaseName))
- {
- kcsb.InitialCatalog = databaseName;
- }
-
- if (!string.IsNullOrWhiteSpace(userToken))
- {
- kcsb.UserToken = userToken;
- }
-
- if (!string.IsNullOrWhiteSpace(applicationClientId))
- {
- kcsb.ApplicationClientId = applicationClientId;
- }
-
- if (!string.IsNullOrWhiteSpace(applicationKey))
- {
- kcsb.ApplicationKey = applicationKey;
- }
-
- return kcsb;
+ var stringBuilder = string.IsNullOrWhiteSpace(connectionString)
+ ? new KustoConnectionStringBuilder(ClusterName, DatabaseName)
+ : new KustoConnectionStringBuilder(connectionString);
+
+ ClusterName = stringBuilder.DataSource;
+ var databaseName = ParseDatabaseName(stringBuilder.InitialCatalog);
+ DatabaseName = databaseName;
+ stringBuilder.InitialCatalog = databaseName;
+
+ ValidationUtils.IsNotNull(ClusterName, nameof(ClusterName));
+
+ return stringBuilder.WithAadUserTokenAuthentication(userToken);
}
private ClientRequestProperties GetClientRequestProperties(CancellationToken cancellationToken)
@@ -310,7 +262,7 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource
public void UpdateDatabase(string databaseName)
{
- SetDatabaseName(databaseName);
+ DatabaseName = ParseDatabaseName(databaseName);
SchemaState = LoadSchemaState();
}
diff --git a/src/Microsoft.Kusto.ServiceLayer/DataSource/Metadata/MetadataFactory.cs b/src/Microsoft.Kusto.ServiceLayer/DataSource/Metadata/MetadataFactory.cs
index ba846c36..83336624 100644
--- a/src/Microsoft.Kusto.ServiceLayer/DataSource/Metadata/MetadataFactory.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/DataSource/Metadata/MetadataFactory.cs
@@ -65,12 +65,12 @@ namespace Microsoft.Kusto.ServiceLayer.DataSource.Metadata
{
var databaseDetails = new List();
- if (typeof(DatabaseMetadata) == clusterDBDetails.FirstOrDefault().GetType())
+ if (clusterDBDetails.FirstOrDefault() is DatabaseMetadata)
{
foreach (var dbDetail in clusterDBDetails)
{
DatabaseInfo databaseInfo = new DatabaseInfo();
- Int64.TryParse(dbDetail.SizeInMB.ToString(), out long sum_OriginalSize);
+ long.TryParse(dbDetail.SizeInMB, out long sum_OriginalSize);
databaseInfo.Options["name"] = dbDetail.Name;
databaseInfo.Options["sizeInMB"] = (sum_OriginalSize / (1024 * 1024)).ToString();
databaseDetails.Add(databaseInfo);
diff --git a/src/Microsoft.Kusto.ServiceLayer/LanguageServices/LanguageService.cs b/src/Microsoft.Kusto.ServiceLayer/LanguageServices/LanguageService.cs
index 4c6ac1f4..a0b10605 100644
--- a/src/Microsoft.Kusto.ServiceLayer/LanguageServices/LanguageService.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/LanguageServices/LanguageService.cs
@@ -684,11 +684,6 @@ namespace Microsoft.Kusto.ServiceLayer.LanguageServices
{
await Task.Run(() =>
{
- if (ConnectionService.IsDedicatedAdminConnection(connInfo.ConnectionDetails))
- {
- // Intellisense cannot be run on these connections as only 1 SqlConnection can be opened on them at a time
- return;
- }
ScriptParseInfo scriptInfo = GetScriptParseInfo(connInfo.OwnerUri, createIfNotExists: true);
if (Monitor.TryEnter(scriptInfo.BuildingMetadataLock, LanguageService.OnConnectionWaitTimeout))
{
diff --git a/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptAsScriptingOperation.cs b/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptAsScriptingOperation.cs
index d05689ba..a5481214 100644
--- a/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptAsScriptingOperation.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptAsScriptingOperation.cs
@@ -14,6 +14,7 @@ using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.SqlScriptPublish;
using Microsoft.SqlServer.Management.Sdk.Sfc;
using System.Diagnostics;
+using Kusto.Data;
namespace Microsoft.Kusto.ServiceLayer.Scripting
{
@@ -157,7 +158,7 @@ namespace Microsoft.Kusto.ServiceLayer.Scripting
IEnumerable selectedObjects = new List(this.Parameters.ScriptingObjects);
_serverName = dataSource.ClusterName;
- _databaseName = new SqlConnectionStringBuilder(this.Parameters.ConnectionString).InitialCatalog;
+ _databaseName = new KustoConnectionStringBuilder(this.Parameters.ConnectionString).InitialCatalog;
UrnCollection urnCollection = new UrnCollection();
foreach (var scriptingObject in selectedObjects)
{
diff --git a/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingListObjectsOperation.cs b/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingListObjectsOperation.cs
index 94fa672e..23d9a969 100644
--- a/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingListObjectsOperation.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingListObjectsOperation.cs
@@ -5,19 +5,11 @@
using System;
using System.Collections.Generic;
-using System.Data.SqlClient;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Threading;
-using System.Threading.Tasks;
-using Microsoft.SqlServer.Management.Sdk.Sfc;
using Microsoft.SqlServer.Management.SqlScriptPublish;
-using Microsoft.SqlTools.Hosting.Protocol;
using Microsoft.Kusto.ServiceLayer.Scripting.Contracts;
using Microsoft.SqlTools.Utility;
-using Microsoft.SqlTools.Hosting.Protocol.Contracts;
using System.Diagnostics;
+using Kusto.Data;
namespace Microsoft.Kusto.ServiceLayer.Scripting
{
@@ -111,7 +103,7 @@ namespace Microsoft.Kusto.ServiceLayer.Scripting
{
try
{
- SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(this.Parameters.ConnectionString);
+ var builder = new KustoConnectionStringBuilder(this.Parameters.ConnectionString);
}
catch (Exception e)
{
diff --git a/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingScriptOperation.cs b/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingScriptOperation.cs
index 78816351..4337c0b0 100644
--- a/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingScriptOperation.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/Scripting/ScriptingScriptOperation.cs
@@ -5,9 +5,9 @@
using System;
using System.Collections.Generic;
-using System.Data.SqlClient;
using System.Diagnostics;
using System.Linq;
+using Kusto.Data;
using Microsoft.Kusto.ServiceLayer.DataSource;
using Microsoft.SqlServer.Management.SqlScriptPublish;
using Microsoft.Kusto.ServiceLayer.Scripting.Contracts;
@@ -202,7 +202,7 @@ namespace Microsoft.Kusto.ServiceLayer.Scripting
string.Join(", ", selectedObjects)));
string server = GetServerNameFromLiveInstance();
- string database = new SqlConnectionStringBuilder(this.Parameters.ConnectionString).InitialCatalog;
+ string database = new KustoConnectionStringBuilder(this.Parameters.ConnectionString).InitialCatalog;
foreach (ScriptingObject scriptingObject in selectedObjects)
{
diff --git a/src/Microsoft.Kusto.ServiceLayer/Scripting/SmoScriptingOperation.cs b/src/Microsoft.Kusto.ServiceLayer/Scripting/SmoScriptingOperation.cs
index bbaf99f8..b6fae03c 100644
--- a/src/Microsoft.Kusto.ServiceLayer/Scripting/SmoScriptingOperation.cs
+++ b/src/Microsoft.Kusto.ServiceLayer/Scripting/SmoScriptingOperation.cs
@@ -7,10 +7,10 @@ using Microsoft.Kusto.ServiceLayer.Scripting.Contracts;
using Microsoft.Kusto.ServiceLayer.DataSource;
using Microsoft.SqlTools.Utility;
using System;
-using System.Data.SqlClient;
using System.Diagnostics;
using System.IO;
using System.Reflection;
+using Kusto.Data;
using static Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptOptions;
namespace Microsoft.Kusto.ServiceLayer.Scripting
@@ -82,7 +82,7 @@ namespace Microsoft.Kusto.ServiceLayer.Scripting
{
try
{
- SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(this.Parameters.ConnectionString);
+ var builder = new KustoConnectionStringBuilder(this.Parameters.ConnectionString);
}
catch (Exception e)
{
diff --git a/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceFactoryTests.cs b/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceFactoryTests.cs
index a488b3de..cbd267a4 100644
--- a/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceFactoryTests.cs
+++ b/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceFactoryTests.cs
@@ -61,7 +61,7 @@ namespace Microsoft.Kusto.ServiceLayer.UnitTests.DataSource
var semanticMarkers = DataSourceFactory.GetDefaultSemanticMarkers(DataSourceType.Kusto, parseInfo, file, queryText);
- Assert.AreNotEqual(0, semanticMarkers.Length);
+ Assert.AreEqual(0, semanticMarkers.Length);
}
[Test]
diff --git a/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceIntellisense/KustoIntellisenseHelperTests.cs b/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceIntellisense/KustoIntellisenseHelperTests.cs
index f674a32c..1f45e269 100644
--- a/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceIntellisense/KustoIntellisenseHelperTests.cs
+++ b/test/Microsoft.Kusto.ServiceLayer.UnitTests/DataSource/DataSourceIntellisense/KustoIntellisenseHelperTests.cs
@@ -65,7 +65,7 @@ namespace Microsoft.Kusto.ServiceLayer.UnitTests.DataSource.DataSourceIntellisen
var queryText = ".show databases";
var completionItems = KustoIntellisenseHelper.GetDefaultDiagnostics(parseInfo, scriptFile, queryText);
- Assert.AreEqual(6, completionItems.Length);
+ Assert.AreEqual(0, completionItems.Length);
}
}
}
\ No newline at end of file
diff --git a/test/Microsoft.Kusto.ServiceLayer.UnitTests/LanguageServices/ConnectedBindingQueueTests.cs b/test/Microsoft.Kusto.ServiceLayer.UnitTests/LanguageServices/ConnectedBindingQueueTests.cs
index f32485b3..66246e56 100644
--- a/test/Microsoft.Kusto.ServiceLayer.UnitTests/LanguageServices/ConnectedBindingQueueTests.cs
+++ b/test/Microsoft.Kusto.ServiceLayer.UnitTests/LanguageServices/ConnectedBindingQueueTests.cs
@@ -86,11 +86,14 @@ namespace Microsoft.Kusto.ServiceLayer.UnitTests.LanguageServices
Assert.AreEqual("NULL_NULL_NULL_NULL", connectionKey);
}
-
- [TestCase(false)]
- public void AddConnectionContext_Sets_BindingContext(bool needsMetadata)
+
+ [Test]
+ public void AddConnectionContext_Sets_BindingContext()
{
- var connectionDetails = new ConnectionDetails();
+ var connectionDetails = new ConnectionDetails
+ {
+ AzureAccountToken = "AzureAccountToken"
+ };
var connectionFactory = new Mock();
var connectionInfo = new ConnectionInfo(connectionFactory.Object, "ownerUri", connectionDetails);
@@ -103,7 +106,7 @@ namespace Microsoft.Kusto.ServiceLayer.UnitTests.LanguageServices
var connectedBindingQueue =
new ConnectedBindingQueue(dataSourceFactory.Object);
var connectionKey =
- connectedBindingQueue.AddConnectionContext(connectionInfo, needsMetadata, "featureName");
+ connectedBindingQueue.AddConnectionContext(connectionInfo, false, "featureName");
var bindingContext = connectedBindingQueue.GetOrCreateBindingContext(connectionKey);
Assert.AreEqual(dataSourceMock.Object, bindingContext.DataSource);