在RavenDB正在托管其他数据库时删除单个RavenDB数据库

12

在 RavenDB 正在运行并托管其他数据库的情况下,我是否可以删除单个数据库中的所有数据?

在 RavenDB 为不同客户端托管多个数据库的生产环境中,停止 RavenDB 以删除单个数据库中的数据是不可接受的。需要自定义开发工具,逐个删除文档才能实现此目的吗?

3个回答

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

我不确定我是否理解您的意思。我可以删除描述文档,然后ravenDB将删除其对应数据库文件上的锁定,然后我就可以手动删除数据库文件了? - Stephan Møller
1
你如何删除描述数据库的文档?有没有相关的文档可以参考? - Mike
进入默认数据库,您会在其中看到该文档。 - John Fisher

6

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

/admin/databases/nameOfYourDatabase?hard-delete=true
?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)中,虽然还不稳定,但您可以使用新版本的studio删除数据库。
您可以从这里下载:http://hibernatingrhinos.com/builds/ravendb-unstable-v2.0/ 我希望这能为您提供额外的帮助,与Ayende的好答案相辅相成。
最好, Dario

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接