首页 文章

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

提问于
浏览
11

当RavenDB仍在运行,托管其他数据库时,有什么方法可以删除单个数据库中的所有数据?

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

3 回答

  • 10

    如果删除描述数据库的文档,则表示您已禁止访问该文档 . RavenDB没有提供实际删除数据库的方法,但是如果删除描述它的文档,数据库将被关闭 . 然后,您可以根据需要删除数据库目录或进行备份 .

  • 6

    在2.0.3版本中(甚至可能在之前的版本中),工作室调用以下http endpoints 以删除数据库:

    /管理/数据库/ nameOfYourDatabase?硬删=真
    ?hard-delete = true是可选的 .

    基于工作室的源代码,我创建了这个函数:

    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();
        }
    
  • 1

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

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

    你可以从这里下载:http://hibernatingrhinos.com/builds/ravendb-unstable-v2.0/

    我希望这能帮助你顺利地对Ayende给出好的答案 .

    最好,达里奥

相关问题