Ste*_*yer 12 database environment production ravendb
当RavenDB仍在运行,托管其他数据库时,有什么方法可以删除单个数据库中的所有数据?
在RavenDB为不同客户托管多个数据库的生产环境中,停止RavenDB以从单个数据库中删除数据是不可接受的.是否有必要自定义开发工具,单独删除文档来实现这一目标?
Aye*_*ien 10
如果删除描述数据库的文档,则表示您已禁止访问该文档.RavenDB没有提供实际删除数据库的方法,但是如果删除描述它的文档,数据库将被关闭.然后,您可以根据需要删除数据库目录或进行备份.
在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)
归档时间: |
|
查看次数: |
3184 次 |
最近记录: |