Ravendb 如何从代码中写入现有数据库的SecuredSettings

Ravendb 如何从代码中写入现有数据库的SecuredSettings,ravendb,Ravendb,我正在尝试从代码中为现有数据库设置定期备份。 PeriodicBackup捆绑包已在web.config中启用 我目前正在使用以下代码: using (var session = systemStore.OpenSession()) { var databaseDocument = session.Load<DatabaseDocument>("Raven/Databases/MyDatabase");

我正在尝试从代码中为现有数据库设置定期备份。 PeriodicBackup捆绑包已在web.config中启用

我目前正在使用以下代码:

            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
}