Я полагаю, что это было раньше. Не могли бы вы указать свои фреймворки и версии Microsoft.Azure.Management?

тности, ищем способ восстановления на новую базу данных на определенный момент времени, сохраняя исходную базу данных;использование управляемого API вместо REST API или шаблонов.

Код у меня пока такой:

    public async Task CreateDatabaseFromRestorePointAsync(
       string resourceGroupName, string serverName, 
       string databaseName, DateTime time) {

        using (SqlManagementClient sqlMgmtClient = GetSqlManagementClient())
        {
            DatabaseInner myDb = await sqlMgmtClient.Databases.GetAsync(
               resourceGroupName, serverName, databaseName);            

            var newDb = new DatabaseInner
            {
                Location = myDb.Location,
                CreateMode = CreateMode.PointInTimeRestore,
                // RestorePointInTime = time; 
                Edition = "Basic",
                SourceDatabaseId = myDb.Id                   
            };

            var result = await sqlMgmtClient.Databases.CreateOrUpdateAsync(
               resourceGroupName, serverName, "BackUpRestoreTestDb", newDb);               

            // Throws "The point in time was not specified for restoring live database...'"
        }
    }

Нашел следующее:

Эта ТА ссылкаКак восстановить базу данных SQL Azure на определенный момент времени с помощью библиотек управления Azure для .NET.

И та же ссылка ссылается наnew Database вместоDatabaseInner, Не могу найти пространство имен объектов базы данных.

Базы данных - создание или обновлениеСправочник по шаблону Microsoft.Sql / servers / database.

Изменить 1: Пробовал метод восстановления конкретно изОтвет Брандо Чжана но, по-видимому, есть изменения в пространстве имен. Я использую:

.Net 4.6.1

Microsoft.Azure.Management.Sql версия 1.6.0-превью

Microsoft.Azure.Management.Sql.Models

Microsoft.Azure.Management.Sql.Fluent версия 1.2.0

Microsoft.Azure.Management.Sql.Fluent.Models

Получениепространство имен не может быть найдено заDatabaseCreateOrUpdateParameters, DatabaseCreateOrUpdateProperties, DatabaseCreateMode, DatabaseCreateOrUpdateResponse.

SqlManagementClient существует в обоих..sql а также..slq.fluent пространства имен, оба из которых не находят пространство имен для.server в соответствииsqlMgmtClient.Servers.Get(resourceGroupName, serverName).Server;

ПоискПространства имен Microsoft Azure Management без удачи

Но Google нашел DatabaseCreateOrUpdateParameters и его пространство имен наиспанский MSDN сайт, который ссылается на выше.

Ответы на вопрос(2)

Решение Вопроса

Microsoft.Azure.Management.Sql версия <1.0Microsoft.Azure,.Management.Sql версия> = 1.0 (ссылка на API:https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.management.sql?view=azure-dotnet)Microsoft.Azure.Management.Sql.Fluent, который основан наMicrosoft.Azure.Management.Sql version> = 1.0 и предназначена для более удобного для человека дизайна, но не имеет такой большой поддержки функций, как базовая библиотека .Sql. (Ссылка API:https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.management.sql.fluent?view=azure-dotnet)

Ответ Брандо на API № 1. Чтобы обновить код для нового API (# 2), он должен выглядеть следующим образом:

    // Create a database: configure create or update parameters and properties explicitly
    Database newDatabaseParameters = new Database()
    {
        Location = currentServer.Location,
        CreateMode = DatabaseCreateMode.PointInTimeRestore,
        Edition = databaseEdition,
        SourceDatabaseId = "/subscriptions/{yoursubscriptionid}/resourceGroups/{yourgroupid}/providers/Microsoft.Sql/servers/{sqlservername}/databases/{sqldatabasename}",
        RestorePointInTime = DateTime.Parse("2017-09-22T02:32:08Z"),//Restore Point time
    };

    Database db = sqlMgmtClient.Databases.CreateOrUpdate(resourceGroupName, serverName, databaseName, newDatabaseParameters);
    return db;

Основные отличия:

Больше нет отдельных классов, таких какDatabaseCreateOrUpdateParameters, DatabaseCreateOrUpdateProperties, DatabaseCreateOrUpdateResponse, Есть только один классDatabase.СвойстваDatabase «сплющены», поэтому нет внутреннегоProperties устанавливать.
 ttugates22 сент. 2017 г., 21:32
Спасибо за информацию!

я предлагаю вам попробовать использовать этот пакет nuget.

Библиотека управления Microsoft Azure SQL

Тогда вы можете использовать приведенные ниже коды для достижения восстановления в точке.

Код как это:

Обратите внимание, вам нужно зарегистрировать приложение, чтобы получить tenantId, applicationId, SecretKey, а затем с subscriptionId, чтобы получить токен аутентификации.

О том, как зарегистрироваться, вы могли бы обратиться к этим кодам:

Основной метод:

        var subscriptionId = "subscriptionId ";
        var clientId = "clientId ";
        var tenantId = "tenantId ";
        var secretKey = "secretKey ";
        var azureSqlDatabase = "azureSqlDatabase ";
        var resourceGroup = "resourceGroup ";
        var azureSqlServer = "azureSqlServer "; 
        var databaseEdition = DatabaseEditions.Standard;
        var databasePerfLevel = "S1";

        SqlManagementClient sqlManagementClient = new SqlManagementClient(new Microsoft.Azure.TokenCloudCredentials(subscriptionId, GetAccessToken(tenantId, clientId, secretKey)));

        CreateOrUpdateDatabase(sqlManagementClient, resourceGroup, azureSqlServer, azureSqlDatabase, databaseEdition, databasePerfLevel);

Метод получения авторизационного токена:

    static string GetAccessToken(string tenantId, string clientId, string secretKey)
    {
        var authenticationContext = new AuthenticationContext($"https://login.windows.net/{tenantId}");
        var credential = new ClientCredential(clientId, secretKey);
        var result = authenticationContext.AcquireTokenAsync("https://management.core.windows.net/",
            credential);

        if (result == null)
        {
            throw new InvalidOperationException("Failed to obtain the JWT token");
        }

        var token = result.Result.AccessToken;
        return token;
    }

Метод восстановления:

    static DatabaseCreateOrUpdateResponse CreateOrUpdateDatabase(SqlManagementClient sqlMgmtClient, string resourceGroupName, string serverName, string databaseName, string databaseEdition, string databasePerfLevel)
    {
        // Retrieve the server that will host this database
        Server currentServer = sqlMgmtClient.Servers.Get(resourceGroupName, serverName).Server;

        // Create a database: configure create or update parameters and properties explicitly
        DatabaseCreateOrUpdateParameters newDatabaseParameters = new DatabaseCreateOrUpdateParameters()
        {
            Location = currentServer.Location,
            Properties = new DatabaseCreateOrUpdateProperties
            {
                CreateMode = DatabaseCreateMode.PointInTimeRestore,
                //DatabaseEditions.Standard;
                Edition = databaseEdition,
                SourceDatabaseId = "/subscriptions/{yoursubscriptionid}/resourceGroups/{yourgroupid}/providers/Microsoft.Sql/servers/{sqlservername}/databases/{sqldatabasename}",
                RestorePointInTime = DateTime.Parse("2017-09-22T02:32:08Z"),//Restore Point time
                //S1
                RequestedServiceObjectiveName = databasePerfLevel
            }
        };

        DatabaseCreateOrUpdateResponse dbResponse = sqlMgmtClient.Databases.CreateOrUpdate(resourceGroupName, serverName, databaseName, newDatabaseParameters);
        return dbResponse;
    }

Результат:

 ttugates22 сент. 2017 г., 14:56
Чем ты. У меня есть следующие пространства имен,using Microsoft.Azure.Management.Sql; using Microsoft.Azure.Management.Sql.Models; using Microsoft.Azure.Management.Sql.Fluent; using Microsoft.Azure.Management.Sql.Fluent.Models; на .Net 4.6.1; Однако DatabaseCreateOrUpdateParameters, DatabaseCreateOrUpdateProperties и некоторые другие «не могут быть найдены». Этоссылка на пространство имен Я полагаю, что это было раньше. Не могли бы вы указать свои фреймворки и версии Microsoft.Azure.Management?

Ваш ответ на вопрос