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

Ste*_*yer 12 database environment production ravendb

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

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

Aye*_*ien 10

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


ms0*_*007 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();
    }
Run Code Online (Sandbox Code Playgroud)