专门寻找一种方法来执行时间点还原到新数据库,保留原始数据库;使用托管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...'"
}
}
发现以下内容:
并且相同的链接引用anew Database
而不是DatabaseInner
。无法找到数据库对象的名称空间。
编辑1:专门从Brando Zhang的答案尝试了恢复方法,但是名称空间显然有所更改。我正在使用:
.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管理命名空间时不走运。
但是google在西班牙MSDN网站上找到了DatabaseCreateOrUpdateParameters及其名称空间,该网站链接到上面。
这里的困惑是因为有3种不同的API:
Microsoft.Azure.Management.Sql
版本<1.0Microsoft.Azure.Management.Sql
版本> = 1.0(API参考:https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.azure.management.sql?view = azure- dotnet)Microsoft.Azure.Management.Sql.Fluent
,它基于Microsoft.Azure.Management.Sql
版本> = 1.0,旨在提供更人性化的设计,但不具备基本.Sql库的功能支持。(API参考:https : //docs.microsoft.com/zh-cn/dotnet/api/microsoft.azure.management.sql.fluent?view=azure-dotnet)白兰度的答案是针对#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;
主要区别在于:
DatabaseCreateOrUpdateParameters
,DatabaseCreateOrUpdateProperties
,DatabaseCreateOrUpdateResponse
。只有一堂课Database
。Database
是“扁平化的”,因此没有内部Properties
设置。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句