Database 在ravendb运行托管其他数据库时删除单个ravendb数据库

Database 在ravendb运行托管其他数据库时删除单个ravendb数据库,database,ravendb,environment,production,Database,Ravendb,Environment,Production,当RavenDB仍在运行,托管其他数据库时,是否有任何方法可以删除单个数据库中的所有数据 在RavenDB为不同客户托管多个数据库的生产环境中,不允许停止RavenDB以从单个数据库中删除数据。是否有必要自定义开发一个工具,在单独删除文档时实现此目的?如果删除描述数据库的文档,则会阻止对其的访问。 RavenDB没有提供实际删除数据库的方法,但是如果删除描述该数据库的文档,该数据库将被关闭。 然后,您可以根据需要删除或备份数据库目录。我想更新您的解决方案,这是“删除”数据库的唯一解决方案 实际上

当RavenDB仍在运行,托管其他数据库时,是否有任何方法可以删除单个数据库中的所有数据


在RavenDB为不同客户托管多个数据库的生产环境中,不允许停止RavenDB以从单个数据库中删除数据。是否有必要自定义开发一个工具,在单独删除文档时实现此目的?

如果删除描述数据库的文档,则会阻止对其的访问。 RavenDB没有提供实际删除数据库的方法,但是如果删除描述该数据库的文档,该数据库将被关闭。
然后,您可以根据需要删除或备份数据库目录。

我想更新您的解决方案,这是“删除”数据库的唯一解决方案

实际上,在RavenDB的新版本(2.0)中,仍然不稳定,您可以使用studio的新版本删除数据库

您可以从这里下载:

我希望这能帮助你得到一个很好的答案

最好的, Dario

在2.0.3版(甚至可能在以前的版本中)中,studio正在调用以下http端点以删除数据库:

/admin/databases/nameOfYourDatabase?硬删除=true
?硬删除=真是可选的

基于studio的源代码,我创建了此函数:

    public void DeleteDatabase(string name, bool hardDelete = false)
    {
        if (string.IsNullOrEmpty(name))
            throw new ArgumentNullException("name");

        var databaseCommands = _documentStore.DatabaseCommands;
        var relativeUrl = "/admin/databases/" + name;

        if (hardDelete)
            relativeUrl += "?hard-delete=true";

        var serverClient = databaseCommands.ForSystemDatabase() as ServerClient;
        if (serverClient == null)
            throw new ApplicationException("Please use a more intelligent exception here");

        var httpJsonRequest = serverClient.CreateRequest("DELETE", relativeUrl);
        httpJsonRequest.ExecuteRequest();
    }

我不确定,如果我没弄错的话。我可以删除描述文档,之后,ravenDB将移除其对关联数据库文件的锁定,然后我将能够手动删除数据库文件?如何删除描述数据库的文档?有关于这个的文档吗?转到默认数据库,你会在那里看到文档。