gpt4 book ai didi

azure - 是否可以使用 Azure ARM SqlManagementClient 从时间点还原创建新数据库?

转载 作者:行者123 更新时间:2023-12-01 19:38:40 25 4
gpt4 key购买 nike

专门寻找一种方法来执行时间点恢复到新数据库,保留原始数据库; 使用托管 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...'"
}
}

发现以下内容:

并且同一链接引用新数据库而不是DatabaseInner。找不到数据库对象命名空间。

编辑 1:专门尝试了Brando Zhang's answer中的恢复方法但显然命名空间发生了变化。我正在使用:

  • .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

获取DatabaseCreateOrUpdateParametersDatabaseCreateOrUpdatePropertiesDatabaseCreateModeDatabaseCreateOrUpdateResponse<的找不到命名空间/.

SqlManagementClient 存在于 ..sql..slq.fluent 命名空间中,这两个命名空间都找不到 的命名空间。 serversqlMgmtClient.Servers.Get(resourceGroupName, serverName).Server;

行中

已搜索 Microsoft's Azure Management Namespaces运气不好。

但是 google 在 spanish MSDN site 上发现了 DatabaseCreateOrUpdateParameters 及其命名空间,链接到上面。

最佳答案

这里的困惑是因为有 3 种不同的 API:

  1. Microsoft.Azure.Management.Sql 版本 <1.0
  2. Microsoft.Azure.Management.Sql 版本 >= 1.0(API 引用: https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.management.sql?view=azure-dotnet )
  3. Microsoft.Azure.Management.Sql.Fluent,基于 Microsoft.Azure.Management.Sql 版本 >= 1.0,旨在更加人性化- 友好的设计,但没有像基础.Sql库那样多的功能支持。 (API引用:https://learn.microsoft.com/en-us/dotnet/api/microsoft.azure.management.sql.fluent?view=azure-dotnet)

Brando 的答案是针对 #1 API 的。要更新新 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;

主要区别是:

  1. 不再有单独的类,例如DatabaseCreateOrUpdateParametersDatabaseCreateOrUpdatePropertiesDatabaseCreateOrUpdateResponse。只有一个类Database
  2. Database 的属性是“扁平化”的,因此无需设置内部Properties

关于azure - 是否可以使用 Azure ARM SqlManagementClient 从时间点还原创建新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com