Не удается получить SQL-сервер управляемого экземпляра Azure с помощью GetByResourceGroup - PullRequest
1 голос
/ 01 мая 2019

У меня есть код c #, который экспортирует базу данных Azure в хранилище BLOB-объектов.Этот код работает с автономным сервером sql и базой данных эластичного пула, но когда я пробую этот код в управляемом экземпляре, я даже не получаю сведения о сервере SQL.Это из-за настроек безопасности управляемого экземпляра?Я запускаю код в ВМ, из которого я могу подключиться к управляемому экземпляру с помощью SSMS.Ниже приведена строка, где я получаю нулевое значение в случае управляемого экземпляра.лазурь - это лазурь.Я получаю детали SQL-сервера, используя приведенный ниже код в случае автономного сервера sql и эластичного пула, но не в случае управляемого экземпляра.

using AzureDatabaseExport.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
using Microsoft.Azure.Management.Sql.Fluent;
using Microsoft.Azure.Management.Storage.Fluent;
using Microsoft.Extensions.Configuration;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.IO;
using System.Configuration;
using QM.ETL.DAL.Helpers;
using System.Collections;
using System.Collections.Specialized;

namespace AzureDBExport_ConsoleApp
{
    public class AzureDatabaseExportService : IAzureDbService
    {
        IAzure azure;
        ISqlServer sqlServer;
        public static NameValueCollection _configSettings;
        //Backup backup = new Backup();
        public AzureDatabaseExportService(ICollection configSettings)
        {
            _configSettings = configSettings as NameValueCollection;
            string subscriptionId = _configSettings[AzureConstants.SubscriptionId];
            string clientId = _configSettings[AzureConstants.ClientId];
            string clientSecret = _configSettings[AzureConstants.ClientSecret];
            string tenantId = _configSettings[AzureConstants.TenantId];

            var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(
                                           clientId, clientSecret, tenantId,
                                           environment: AzureEnvironment.AzureGlobalCloud);
            azure = Azure.Configure()
                        .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                        .Authenticate(credentials).WithSubscription(subscriptionId);
        }

        private ISqlServer GetSqlServer(string sqlServerResourceGroup, string sqlServerName)
        {
            try
            {
                return azure.SqlServers.GetByResourceGroup("sqlServerResourceGroup",
                                            "sqlServerName");
            }
            catch (Exception ex)
            {
                throw new Exception("Error getting Azure SQL server resource info. ", ex);
            }

        }
        private IStorageAccount GetStorageAccount()
        {
            try
            {
                return azure.StorageAccounts.GetByResourceGroup(
                                    _configSettings[AzureConstants.StorageAccountResourceGroup],
                                    _configSettings[AzureConstants.StorageAccountName]);
            }
            catch (Exception ex)
            {
                throw new Exception("Error getting Azure storage account info. ", ex);
            }
        }
        private ISqlDatabase GetSqlDatabase()
        {
            try
            {
                return sqlServer.Databases.Get(_configSettings[AzureConstants.SqlDatabaseName]);
            }
            catch (Exception ex)
            {
                throw new Exception("Error getting Azure Database info. ", ex);
            }
        }
        /// <summary>
        /// Exports a copy of database to blob storage
        /// </summary>
        /// <param name="backup"></param>
        /// <returns>Returns status of export</returns>
        public string ExportAzureDatabase()
        {
            string fileName = DateTime.Now.ToString("yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss");
            sqlServer = GetSqlServer(_configSettings[AzureConstants.SqlServerResourceGroup],
                                                _configSettings[AzureConstants.SqlServerName]);
            IStorageAccount storageAccount = GetStorageAccount();
            ISqlDatabase sqlDatabase = sqlServer.Databases.Get(_configSettings[AzureConstants.SqlDatabaseName]);
            try
            {
                ISqlDatabaseImportExportResponse exportedSqlDatabase = sqlDatabase.ExportTo(
                                            storageAccount,
                                             _configSettings[AzureConstants.StorageContainerName],
                                            fileName)
                                        .WithSqlAdministratorLoginAndPassword(
                                            _configSettings[AzureConstants.SqlAdminUsername],
                                            _configSettings[AzureConstants.SqlAdminPassword])
                                        .Execute();
                return fileName;
            }
            catch (Exception ex)
            {
                throw new Exception("Error exporting database to blob stoage. ", ex);
            }
        }
    }
}

                                                sqlServerName);
                                            sqlServerName);
...