Ravendb 如何从代码中写入现有数据库的SecuredSettings
我正在尝试从代码中为现有数据库设置定期备份。 PeriodicBackup捆绑包已在web.config中启用 我目前正在使用以下代码:Ravendb 如何从代码中写入现有数据库的SecuredSettings,ravendb,Ravendb,我正在尝试从代码中为现有数据库设置定期备份。 PeriodicBackup捆绑包已在web.config中启用 我目前正在使用以下代码: using (var session = systemStore.OpenSession()) { var databaseDocument = session.Load<DatabaseDocument>("Raven/Databases/MyDatabase");
using (var session = systemStore.OpenSession())
{
var databaseDocument = session.Load<DatabaseDocument>("Raven/Databases/MyDatabase");
if (databaseDocument != null)
{
databaseDocument.Settings.Add("Raven/AzureStorageAccount", "MyStorageAccount");
databaseDocument.SecuredSettings.Add("Raven/AzureStorageKey", "abc123");
session.SaveChanges();
}
}
使用(var session=systemStore.OpenSession())
{
var-databaseDocument=session.Load(“Raven/Databases/MyDatabase”);
if(databaseDocument!=null)
{
databaseDocument.Settings.Add(“Raven/AzureStorageAccount”、“MyStorageAccount”);
databaseDocument.SecuredSettings.Add(“Raven/AzureStorageKey”、“abc123”);
session.SaveChanges();
}
}
这将导致数据库“MyDatabase”的以下设置:
{
“Id”:“MyDatabase”,
“设置”:{
“Raven/DataDir”:“~\\Databases\\MyDatabase”,
“Raven/AzureStorageAccount”:“MyStorageAccount”
},
“安全设置”:{
“Raven/AzureStorageKey”:”
},
“禁用”:错误
}
周期性备份自然不起作用。
我想这可能是因为AzureStorageKey无法解密。
我应该自己加密写入SecuredSettings的值吗?如果是这样的话,那我该怎么做呢?当您有安全设置时,您不能以这种方式直接写入sys文档。
您需要使用store.DatabaseCommands.Admin.CreateDatabase()方法,该方法知道如何处理此问题。这确实有效。我认为它只在数据库创建期间起作用,但即使tennant已经存在,它似乎也可以使用。非常感谢。
{
"Id": "MyDatabase",
"Settings": {
"Raven/DataDir": "~\\Databases\\MyDatabase",
"Raven/AzureStorageAccount": "MyStorageAccount"
},
"SecuredSettings": {
"Raven/AzureStorageKey": "<data could not be decrypted>"
},
"Disabled": false
}