Skip to content

Commit

Permalink
Add Schema Compare support for AAD (#853)
Browse files Browse the repository at this point in the history
* pass AzureAcountToken if there is one

* Addressing comments

* formatting

* more formatting and moving getting connectionstring from constructor to CreateSchemaCompareEndpoint()
  • Loading branch information
kisantia committed Aug 22, 2019
1 parent 487235b commit 361287a
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<ItemGroup>
<PackageReference Include="System.Data.SqlClient" Version="4.6.0" />
<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="$(SmoPackageVersion)" />
<PackageReference Include="Microsoft.SqlServer.DacFx" Version="150.4505.1-preview" />
<PackageReference Include="Microsoft.SqlServer.DacFx" Version="150.4519.1-preview" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.6.0-preview3-26501-04" />
</ItemGroup>
<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ class SchemaCompareOperation : ITaskOperation

public SchemaCompareParams Parameters { get; set; }

public string SourceConnectionString { get; set; }
public ConnectionInfo SourceConnectionInfo { get; set; }

public string TargetConnectionString { get; set; }
public ConnectionInfo TargetConnectionInfo { get; set; }

public SchemaComparisonResult ComparisonResult { get; set; }

Expand All @@ -43,8 +43,8 @@ public SchemaCompareOperation(SchemaCompareParams parameters, ConnectionInfo sou
{
Validate.IsNotNull("parameters", parameters);
this.Parameters = parameters;
this.SourceConnectionString = SchemaCompareUtils.GetConnectionString(sourceConnInfo, parameters.SourceEndpointInfo.DatabaseName);
this.TargetConnectionString = SchemaCompareUtils.GetConnectionString(targetConnInfo, parameters.TargetEndpointInfo.DatabaseName);
this.SourceConnectionInfo = sourceConnInfo;
this.TargetConnectionInfo = targetConnInfo;
this.OperationId = !string.IsNullOrEmpty(parameters.OperationId) ? parameters.OperationId : Guid.NewGuid().ToString();
}

Expand Down Expand Up @@ -82,8 +82,8 @@ public void Execute(TaskExecutionMode mode)

try
{
SchemaCompareEndpoint sourceEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.SourceEndpointInfo, this.SourceConnectionString);
SchemaCompareEndpoint targetEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.TargetEndpointInfo, this.TargetConnectionString);
SchemaCompareEndpoint sourceEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.SourceEndpointInfo, this.SourceConnectionInfo);
SchemaCompareEndpoint targetEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.TargetEndpointInfo, this.TargetConnectionInfo);

SchemaComparison comparison = new SchemaComparison(sourceEndpoint, targetEndpoint);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,17 @@ class SchemaCompareSaveScmpOperation : ITaskOperation

public SchemaCompareSaveScmpParams Parameters { get; set; }

public string SourceConnectionString { get; set; }
public ConnectionInfo SourceConnectionInfo { get; set; }

public string TargetConnectionString { get; set; }
public ConnectionInfo TargetConnectionInfo { get; set; }

public SchemaCompareSaveScmpOperation(SchemaCompareSaveScmpParams parameters, ConnectionInfo sourceConnInfo, ConnectionInfo targetConnInfo)
{
Validate.IsNotNull("parameters", parameters);
Validate.IsNotNull("parameters.ScmpFilePath", parameters.ScmpFilePath);
this.Parameters = parameters;
this.SourceConnectionString = SchemaCompareUtils.GetConnectionString(sourceConnInfo, parameters.SourceEndpointInfo.DatabaseName);
this.TargetConnectionString = SchemaCompareUtils.GetConnectionString(targetConnInfo, parameters.TargetEndpointInfo.DatabaseName);
this.SourceConnectionInfo = sourceConnInfo;
this.TargetConnectionInfo = targetConnInfo;
this.OperationId = Guid.NewGuid().ToString();
}

Expand All @@ -55,8 +55,8 @@ public void Execute(TaskExecutionMode mode = TaskExecutionMode.Execute)

try
{
SchemaCompareEndpoint sourceEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.SourceEndpointInfo, this.SourceConnectionString);
SchemaCompareEndpoint targetEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.TargetEndpointInfo, this.TargetConnectionString);
SchemaCompareEndpoint sourceEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.SourceEndpointInfo, this.SourceConnectionInfo);
SchemaCompareEndpoint targetEndpoint = SchemaCompareUtils.CreateSchemaCompareEndpoint(this.Parameters.TargetEndpointInfo, this.TargetConnectionInfo);

SchemaComparison comparison = new SchemaComparison(sourceEndpoint, targetEndpoint);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Microsoft.SqlServer.Dac.Model;
using Microsoft.SqlTools.ServiceLayer.Connection;
using Microsoft.SqlTools.ServiceLayer.SchemaCompare.Contracts;
using Microsoft.SqlTools.ServiceLayer.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
Expand Down Expand Up @@ -107,7 +108,7 @@ internal static SchemaComparisonExcludedObjectId CreateExcludedObject(SchemaComp
}
}

internal static SchemaCompareEndpoint CreateSchemaCompareEndpoint(SchemaCompareEndpointInfo endpointInfo, string connectionString)
internal static SchemaCompareEndpoint CreateSchemaCompareEndpoint(SchemaCompareEndpointInfo endpointInfo, ConnectionInfo connInfo)
{
switch (endpointInfo.EndpointType)
{
Expand All @@ -117,7 +118,10 @@ internal static SchemaCompareEndpoint CreateSchemaCompareEndpoint(SchemaCompareE
}
case SchemaCompareEndpointType.Database:
{
return new SchemaCompareDatabaseEndpoint(connectionString);
string connectionString = GetConnectionString(connInfo, endpointInfo.DatabaseName);
return connInfo.ConnectionDetails?.AzureAccountToken != null
? new SchemaCompareDatabaseEndpoint(connectionString, new AccessTokenProvider(connInfo.ConnectionDetails.AzureAccountToken))
: new SchemaCompareDatabaseEndpoint(connectionString);
}
default:
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.6.0" />
<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="$(SmoPackageVersion)" />
<PackageReference Include="Microsoft.SqlServer.DacFx" Version="150.4505.1-preview" />
<PackageReference Include="Microsoft.SqlServer.DacFx" Version="150.4519.1-preview" />
</ItemGroup>
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.6.0" />
<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="$(SmoPackageVersion)" />
<PackageReference Include="Microsoft.SqlServer.DacFx" Version="150.4505.1-preview" />
<PackageReference Include="Microsoft.SqlServer.DacFx" Version="150.4519.1-preview" />
</ItemGroup>
<ItemGroup>
<Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
Expand Down

0 comments on commit 361287a

Please sign in to comment.