2011-08-17 14 views
11

他のデータベースをホストしていて、RavenDBがまだ稼動している間に、1つのデータベース内のすべてのデータを削除できますか?ravendbが他のデータベースをホストしている間に1つのravendbデータベースを削除

異なる顧客向けに複数のデータベースをホストしている実稼働環境では、RavenDBを停止して1つのデータベースからデータを削除することはできません。これを達成するために個別に文書を削除する際に、カスタムツールを開発する必要がありますか?

答えて

10

データベースを記述する文書を削除すると、そのデータベースへのアクセスが禁止されています。 RavenDBはデータベースを実際に削除する方法を提供しませんが、データベースを記述した文書を削除するとデータベースがシャットダウンされます。 必要に応じてデータベースディレクトリを削除したり、バックアップしたりすることができます。

+0

イムはわからない、私はあなたを右に得た場合。記述した文書を削除することができます。その後、ravenDBは関連するデータベースファイルのロックを解除し、データベースファイルを手動で削除することができますか? –

+0

はい、それは基本的にどのように動作するのですか。 –

+1

データベースを記述する文書をどのように削除しますか?どこかのドキュメントはありますか? – Mike

1

私はあなたのソリューションを更新したい、それはデータベースを "削除"するための唯一のソリューションです。

実際にはまだ不安定なRavenDBの新しいバージョン(2.0)では、新しいバージョンのスタジオでデータベースを削除できます。

あなたはここからダウンロードすることができます:http://hibernatingrhinos.com/builds/ravendb-unstable-v2.0/

私は、これはAyende良い答えにaditionallyお手伝いを願っています。バージョン2.0.3では

ベスト、 ダリオ

6

(多分リリースで前)のスタジオには、データベースを削除するために、次のHTTPエンドポイントを呼んでいる:

/管理/データベース/ 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(); 
    } 
関連する問題