DocumentDB - Eliminar bases de datos

Puede eliminar una base de datos o bases de datos desde el portal así como desde el código utilizando .Net SDK. Aquí, discutiremos, paso a paso, cómo eliminar una base de datos en DocumentDB.

Step 1- Vaya a su cuenta de DocumentDB en Azure Portal. Para fines de demostración, agregué dos bases de datos más como se ve en la siguiente captura de pantalla.

Step 2- Para eliminar cualquier base de datos, debe hacer clic en esa base de datos. Seleccionemos tempdb, verá la siguiente página, seleccione la opción 'Eliminar base de datos'.

Step 3 - Mostrará el mensaje de confirmación, ahora haga clic en el botón 'Sí'.

Verá que tempdb ya no está disponible en su tablero.

También puede eliminar bases de datos de su código utilizando .Net SDK. Para hacer los siguientes son los pasos.

Step 1 - Eliminemos la base de datos especificando el ID de la base de datos que queremos eliminar, pero necesitamos su SelfLink.

Step 2 - Estamos llamando a CreateDatabaseQuery como antes, pero esta vez en realidad estamos proporcionando una consulta para devolver solo la base de datos con el ID tempdb1.

private async static Task DeleteDatabase(DocumentClient client) {
   Console.WriteLine("******** Delete Database ********");
   Database database = client
      .CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'tempdb1'")
      .AsEnumerable()
      .First();
   await client.DeleteDatabaseAsync(database.SelfLink);
}

Step 3- Esta vez, podemos llamar a AsEnumerable en lugar de ToList () porque en realidad no necesitamos un objeto de lista. Esperando solo el resultado, llamar a AsEnumerable es suficiente para que podamos obtener el primer objeto de base de datos devuelto por la consulta con First (). Este es el objeto de base de datos para tempdb1 y tiene un SelfLink que podemos usar para llamar a DeleteDatabaseAsync que borra la base de datos.

Step 4 - También debe llamar a la tarea DeleteDatabase desde la tarea CreateDocumentClient después de crear una instancia de DocumentClient.

Step 5 - Para ver la lista de bases de datos después de eliminar la base de datos especificada, llamemos nuevamente al método GetDatabases.

using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
   //await CreateDatabase(client);
	
   GetDatabases(client);
   await DeleteDatabase(client);
   GetDatabases(client); 
}

A continuación se muestra el archivo Program.cs completo hasta ahora.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Newtonsoft.Json;

namespace DocumentDBDemo {

   class Program {
	
      private const string EndpointUrl = "https://azuredocdbdemo.documents.azure.com:443/";
		
      private const string AuthorizationKey = "BBhjI0gxdVPdDbS4diTjdloJq7Fp4L5RO/
         StTt6UtEufDM78qM2CtBZWbyVwFPSJIm8AcfDu2O+AfV T+TYUnBQ==";
			
      static void Main(string[] args) {
         try {
            CreateDocumentClient().Wait();
         } catch (Exception e) {
            Exception baseException = e.GetBaseException();
            Console.WriteLine("Error: {0}, Message: {1}", e.Message, baseException.Message);
         }
         Console.ReadKey();
      }
		
      private static async Task CreateDocumentClient() {
         // Create a new instance of the DocumentClient
         using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
            //await CreateDatabase(client);
            GetDatabases(client);
            await DeleteDatabase(client);
            GetDatabases(client);
         }
      }
		
      private async static Task CreateDatabase(DocumentClient client) {
         Console.WriteLine();
         Console.WriteLine("******** Create Database *******");
			
         var databaseDefinition = new Database { Id = "mynewdb" };
         var result = await client.CreateDatabaseAsync(databaseDefinition);
         var database = result.Resource;
			
         Console.WriteLine(" Database Id: {0}; Rid: {1}",
            database.Id, database.ResourceId);
         Console.WriteLine("******** Database Created *******");
      }
		
      private static void GetDatabases(DocumentClient client) {
         Console.WriteLine();
         Console.WriteLine();
         Console.WriteLine("******** Get Databases List ********");
			
         var databases = client.CreateDatabaseQuery().ToList();
			
         foreach (var database in databases) {
            Console.WriteLine(" Database Id: {0}; Rid: {1}", database.Id,
               database.ResourceId);
         }
			
         Console.WriteLine();
         Console.WriteLine("Total databases: {0}", databases.Count);
      }
		
      private async static Task DeleteDatabase(DocumentClient client) {
         Console.WriteLine();
         Console.WriteLine("******** Delete Database ********");
			
         Database database = client
            .CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'tempdb1'")
            .AsEnumerable()
            .First();
         await client.DeleteDatabaseAsync(database.SelfLink);
      }
		
   }
}

Cuando se compile y ejecute el código anterior, recibirá el siguiente resultado que contiene los ID de base de datos y recursos de las tres bases de datos y el número total de bases de datos.

******** Get Databases List ******** 
 Database Id: myfirstdb; Rid: Ic8LAA== 
 Database Id: mynewdb; Rid: ltpJAA== 
 Database Id: tempdb1; Rid: 06JjAA==
 
Total databases: 3  

******** Delete Database ******** 
  
******** Get Databases List ******** 
 Database Id: myfirstdb; Rid: Ic8LAA== 
 Database Id: mynewdb; Rid: ltpJAA==
 
Total databases: 2

Después de eliminar la base de datos, también verá al final que solo quedan dos bases de datos en la cuenta de DocumentDB.