예제 #1
0
        public virtual void TestDatabaseSensitivityLabels()
        {
            using (SqlManagementTestContext context = new SqlManagementTestContext(this))
            {
                ResourceGroup resourceGroup     = context.CreateResourceGroup();
                string        resourceGroupName = resourceGroup.Name;

                Server server     = context.CreateServer(resourceGroup);
                string serverName = server.Name;

                ISqlManagementClient client = context.GetClient <SqlManagementClient>();
                CreateFirewallRule(resourceGroupName, serverName, client);

                string   databaseName = GetDatabaseName();
                Database database     = client.Databases.CreateOrUpdate(
                    resourceGroupName, serverName, databaseName,
                    new Database()
                {
                    Location = server.Location,
                });
                Assert.NotNull(database);

                CreateTableIfNeeded(serverName, server.FullyQualifiedDomainName, databaseName);

                RunTest(client, resourceGroupName, serverName, databaseName);

                client.Databases.Delete(resourceGroupName, serverName, databaseName);
                client.Servers.Delete(resourceGroupName, serverName);
            }
        }
예제 #2
0
 protected virtual SensitivityLabel CreateOrUpdateSensitivityLabel(ISqlManagementClient client,
                                                                   string resourceGroupName, string serverName, string databaseName,
                                                                   string schemaName, string tableName, string columnName, SensitivityLabel label)
 {
     return(client.SensitivityLabels.CreateOrUpdate(
                resourceGroupName, serverName, databaseName, schemaName, tableName, columnName, label));
 }
예제 #3
0
 protected virtual SensitivityLabel GetSensitivityLabel(ISqlManagementClient client,
                                                        string resourceGroupName, string serverName, string databaseName,
                                                        string schemaName, string tableName, string columnName)
 {
     return(client.SensitivityLabels.Get(resourceGroupName, serverName, databaseName,
                                         schemaName, tableName, columnName, SensitivityLabelSource.Current));
 }
예제 #4
0
 protected virtual void DeleteSensitivityLabel(ISqlManagementClient client,
                                               string resourceGroupName, string serverName, string databaseName,
                                               string schemaName, string tableName, string columnName)
 {
     client.SensitivityLabels.Delete(resourceGroupName, serverName, databaseName,
                                     schemaName, tableName, columnName);
 }
        public AzureSqlManager(IOptions <AzureOptions> azureOptions)
        {
            _azureOptions = azureOptions;

            var azureCreds = AzureTokenService.GetAzureCredentials(_azureOptions.Value.ClientId,
                                                                   _azureOptions.Value.AppSecret,
                                                                   _azureOptions.Value.TenantId,
                                                                   _azureOptions.Value.SubscriptionId);

            var restClient = RestClient.Configure().WithEnvironment(azureCreds.Environment).WithCredentials(azureCreds).Build();

            _client = new SqlManagementClient(restClient)
            {
                SubscriptionId = azureCreds.DefaultSubscriptionId
            };
        }
예제 #6
0
        protected void RunTest(ISqlManagementClient client,
                               string resourceGroupName, string serverName, string databaseName)
        {
            IPage <SensitivityLabel> sensitivityLabels = ListCurrentSensitivityLabels(
                client, resourceGroupName, serverName, databaseName);

            Assert.NotNull(sensitivityLabels);
            Assert.Empty(sensitivityLabels);

            sensitivityLabels = ListRecommendedSensitivityLabels(client, resourceGroupName, serverName, databaseName);
            Assert.NotNull(sensitivityLabels);
            Assert.NotEmpty(sensitivityLabels);
            int recommendedLabelsCount        = sensitivityLabels.Count();
            SensitivityLabel recommendedLabel = sensitivityLabels.First();
            string           columnName       = recommendedLabel.Id.Split("/")[16];

            SensitivityLabel newLabel = new SensitivityLabel(
                labelName: recommendedLabel.LabelName,
                labelId: recommendedLabel.LabelId,
                informationType: recommendedLabel.InformationType,
                informationTypeId: recommendedLabel.InformationTypeId);

            SensitivityLabel createdLabel = CreateOrUpdateSensitivityLabel(client, resourceGroupName, serverName, databaseName,
                                                                           s_SchemaName, s_TableName, columnName, newLabel);

            AssertEqual(recommendedLabel, createdLabel);

            createdLabel = GetSensitivityLabel(client, resourceGroupName, serverName, databaseName, s_SchemaName, s_TableName, columnName);
            AssertEqual(recommendedLabel, createdLabel);

            sensitivityLabels = ListRecommendedSensitivityLabels(client, resourceGroupName, serverName, databaseName);
            Assert.NotNull(sensitivityLabels);
            Assert.Equal(recommendedLabelsCount - 1, sensitivityLabels.Count());

            DeleteSensitivityLabel(client, resourceGroupName, serverName, databaseName, s_SchemaName, s_TableName, columnName);

            sensitivityLabels = ListRecommendedSensitivityLabels(
                client, resourceGroupName, serverName, databaseName);
            Assert.NotNull(sensitivityLabels);
            Assert.Equal(recommendedLabelsCount, sensitivityLabels.Count());
        }
예제 #7
0
 /// <summary>
 /// Gets the status of an Azure Sql Database Failover Group Force
 /// Failover operation.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.Sql.LegacySdk.ISqlManagementClient.
 /// </param>
 /// <param name='operationStatusLink'>
 /// Required. Location value returned by the Begin operation
 /// </param>
 /// <returns>
 /// Response for long running Azure Sql Database Failover Group
 /// operation.
 /// </returns>
 public static Task <FailoverGroupForceFailoverResponse> GetFailoverGroupForceFailoverAllowDataLossOperationStatusAsync(this ISqlManagementClient operations, string operationStatusLink)
 {
     return(operations.GetFailoverGroupForceFailoverAllowDataLossOperationStatusAsync(operationStatusLink, CancellationToken.None));
 }
예제 #8
0
 /// <summary>
 /// Gets the status of an Azure Sql Database Failover Group Force
 /// Failover operation.
 /// </summary>
 /// <param name='operations'>
 /// Reference to the
 /// Microsoft.Azure.Management.Sql.LegacySdk.ISqlManagementClient.
 /// </param>
 /// <param name='operationStatusLink'>
 /// Required. Location value returned by the Begin operation
 /// </param>
 /// <returns>
 /// Response for long running Azure Sql Database Failover Group
 /// operation.
 /// </returns>
 public static FailoverGroupForceFailoverResponse GetFailoverGroupForceFailoverAllowDataLossOperationStatus(this ISqlManagementClient operations, string operationStatusLink)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((ISqlManagementClient)s).GetFailoverGroupForceFailoverAllowDataLossOperationStatusAsync(operationStatusLink);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
예제 #9
0
        public void TestDatabaseSensitivityLabels()
        {
            using (SqlManagementTestContext context = new SqlManagementTestContext(this))
            {
                ResourceGroup        resourceGroup = context.CreateResourceGroup();
                ISqlManagementClient client        = context.GetClient <SqlManagementClient>();
                Server server = context.CreateServer(resourceGroup);
                client.FirewallRules.CreateOrUpdate(resourceGroup.Name, server.Name, "sqltestrule", new FirewallRule()
                {
                    StartIpAddress = "0.0.0.0",
                    EndIpAddress   = "255.255.255.255"
                });

                Database database = client.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, SqlManagementTestUtilities.GenerateName(s_DatabaseNamePrefix), new Database()
                {
                    Location = server.Location,
                });
                Assert.NotNull(database);

                if (HttpMockServer.GetCurrentMode() != HttpRecorderMode.Playback)
                {
                    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder()
                    {
                        DataSource     = string.Format(server.FullyQualifiedDomainName, server.Name),
                        UserID         = SqlManagementTestUtilities.DefaultLogin,
                        Password       = SqlManagementTestUtilities.DefaultPassword,
                        InitialCatalog = database.Name
                    };

                    using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                    {
                        connection.Open();
                        SqlCommand command = new SqlCommand(string.Format(@"
                            CREATE TABLE {0} (
                                PersonID int,
                                LastName varchar(255),
                                FirstName varchar(255),
                                Address varchar(255),
                                City varchar(255)
                            );", s_TableName), connection);
                        command.ExecuteNonQuery();
                    }

                    SleepIfNeeded();
                    IPage <SensitivityLabel> sensitivityLabels = client.SensitivityLabels.ListByDatabase(resourceGroup.Name, server.Name, database.Name);
                    Assert.NotNull(sensitivityLabels);
                    Assert.NotEmpty(sensitivityLabels);
                    Assert.DoesNotContain(sensitivityLabels, label => label.Name.Equals(s_Current));
                    int labelsCount = sensitivityLabels.Count();
                    SensitivityLabel sensitivityLabel = sensitivityLabels.First();
                    string           columnName       = sensitivityLabel.Id.Split("/")[16];

                    SensitivityLabel responseLabel = client.SensitivityLabels.CreateOrUpdate(
                        resourceGroup.Name, server.Name, database.Name, s_SchemaName, s_TableName, columnName,
                        new SensitivityLabel(labelName: sensitivityLabel.LabelName, informationType: sensitivityLabel.InformationType));
                    AssertEqual(sensitivityLabel, responseLabel);

                    responseLabel = client.SensitivityLabels.Get(resourceGroup.Name, server.Name, database.Name, s_SchemaName, s_TableName, columnName, SensitivityLabelSource.Current);
                    AssertEqual(sensitivityLabel, responseLabel);

                    sensitivityLabels = client.SensitivityLabels.ListByDatabase(resourceGroup.Name, server.Name, database.Name);
                    Assert.NotNull(sensitivityLabels);
                    Assert.Equal(labelsCount, sensitivityLabels.Count());
                    Assert.Equal(labelsCount - 1, sensitivityLabels.Where(l => l.Name == "recommended").Count());
                    Assert.Contains(sensitivityLabels, label => label.Name.Equals(s_Current));

                    client.SensitivityLabels.Delete(resourceGroup.Name, server.Name, database.Name, s_SchemaName, s_TableName, columnName);

                    sensitivityLabels = client.SensitivityLabels.ListByDatabase(resourceGroup.Name, server.Name, database.Name);
                    Assert.NotNull(sensitivityLabels);
                    Assert.Equal(labelsCount, sensitivityLabels.Count());
                    Assert.DoesNotContain(sensitivityLabels, label => label.Name.Equals(s_Current));

                    client.Databases.Delete(resourceGroup.Name, server.Name, database.Name);
                    client.Servers.Delete(resourceGroup.Name, server.Name);
                }
            }
        }
예제 #10
0
 internal AzureSqlManager()
 {
     SqlManagementClient = new SqlManagementClient(Dependencies.Subscription.Credentials,
                                                   new Uri(Dependencies.Subscription.CoreEndpointUrl));
 }
예제 #11
0
 protected static void CreateFirewallRule(string resourceGroupName, string serverName, ISqlManagementClient client)
 {
     client.FirewallRules.CreateOrUpdate(resourceGroupName, serverName, s_FirewallRuleName,
                                         new FirewallRule()
     {
         StartIpAddress = s_StartIpAddress,
         EndIpAddress   = s_EndIpAddress
     });
 }
예제 #12
0
 protected virtual IPage <SensitivityLabel> ListRecommendedSensitivityLabels(ISqlManagementClient client,
                                                                             string resourceGroupName, string serverName, string databaseName)
 {
     return(client.SensitivityLabels.ListRecommendedByDatabase(
                resourceGroupName, serverName, databaseName));
 }
예제 #13
0
 internal AzureSqlManager()
 {            
     SqlManagementClient = new SqlManagementClient(Dependencies.Subscription.Credentials,
         new Uri(Dependencies.Subscription.CoreEndpointUrl));
 }