在新的Azure SDK . net - Azure. resourcemanager中创建快照和导出



因为旧的。net Azure SDK已被弃用,我正在尝试将其迁移到新版本。我一直在寻找新SDK中旧方法和属性的替代品。我们做一个现有数据库的快照,并导出到存储帐户。

旧方法的代码片段:

var sp = new ServicePrincipalLoginInformation()
{
ClientId = clientId,
ClientSecret = clientSecret
};
var credentials = new AzureCredentials(sp, tenantId, AzureEnvironment.AzureGlobalCloud);
var azureClient = Authenticate(credentials).WithSubscription(subscriptionId);
var sqlServer = await azureClient.SqlServers.GetByIdAsync(db.SourceServerId);
var serverDbs = await sqlServer.Databases.ListAsync();
var snapshotDb = serverDbs.FirstOrDefault(i => i.Name == snapshotDbName);
if(snapshotDb is not null)
return;
snapshotDb = await azureClient.SqlServers.Databases
.Define(snapshotDbName)
.WithExistingSqlServer(sqlServer)
.WithSourceDatabase(sourceDatabaseId)
.WithMode(CreateMode.Copy)
.CreateAsync(cancellationToken);
.
.
.
var storageAccount = azureClient.StorageAccounts.GetByIdAsync(storageId);
await snapshotDb.ExportTo(storageAccount, storageContainer, outputFileName)
.WithSqlAdministratorLoginAndPassword(user, password)
.ExecuteAsync(cancellationToken);

根据文档,我能够得到这个:

var sp = new ClientSecretCredential(tenantId, clientId, clientSecret);
var azureClient = new ArmClient(sp, subscriptionId);
var ri = new ResourceIdentifier(NOT SURE WHAT SHOULD BE HERE);
var resGroup = azure.GetResourceGroupResource(ri);
var sqlServerResponse = await resGroup.GetSqlServers().GetAsync(sourceServerId);
var sqlServer = sqlServers.Value;
var serverDBs = sqlServer.GetSqlDatabases();
var snapshotDB = serverDBs.FirstOrDefault(x => x.Data.Name == db.SnapshotDbName);

什么是替代命令,它处理创建快照和导出到存储帐户基于在已弃用的示例中使用的参数?还是我漏了什么包裹?

关于如何使用最新版本的。net SDK进行资源管理,我们有一个通用指南。关于您的问题,您可以参考下面的代码

var resourceGroup = _client.GetDefaultSubscription().GetResourceGroup(resourceGroupName).Value;
var sqlServer = resourceGroup.GetSqlServer("mySqlServerName").Value;
var sqlDB = sqlServer.GetSqlDatabase("myDbName").Value;
var exportResult= sqlDB.Export(Azure.WaitUntil.Completed, new Azure.ResourceManager.Sql.Models.DatabaseExportDefinition("storageKeyType", "storageKey", new Uri("storageUri"), "adminLogin", "adminLoginPWD")).Value;

这里的_client是ArmClient对象,你的代码var ri = new ResourceIdentifier(NOT SURE WHAT SHOULD BE HERE);是不必要的,我可以知道为什么你想在这里创建一个资源标识符吗?

请确保您使用的是。net中SQL库的Azure SDK 1.1.0版本

我们欢迎任何关于我们新SDK的反馈,请在此调查中告诉我们您对我们新SDK的想法

相关内容

  • 没有找到相关文章

最新更新