Учебники

DocumentDB – отбросить базы данных

Вы можете удалить базу данных или базы данных из портала, а также из кода с помощью .Net SDK. Здесь мы обсудим пошагово, как отбросить базу данных в DocumentDB.

Шаг 1. Перейдите в свою учетную запись DocumentDB на портале Azure. Для демонстрации я добавил еще две базы данных, как показано на следующем снимке экрана.

Удалить базы данных

Шаг 2 – Чтобы удалить любую базу данных, вам нужно щелкнуть эту базу данных. Давайте выберем tempdb, вы увидите следующую страницу, выберите опцию «Удалить базу данных».

Удалить базу данных

Шаг 3 – Появится подтверждающее сообщение, теперь нажмите кнопку «Да».

Подтверждение сообщения

Вы увидите, что база данных tempdb больше не доступна на вашей панели инструментов.

TempDB удален

Вы также можете удалить базы данных из своего кода, используя .Net SDK. Чтобы сделать следующие шаги.

Шаг 1 – Давайте удалим базу данных, указав идентификатор базы данных, которую мы хотим удалить, но нам нужна ее SelfLink.

Шаг 2 – Мы вызываем CreateDatabaseQuery, как и раньше, но на этот раз мы фактически предоставляем запрос, который возвращает только одну базу данных с идентификатором 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);
}

Шаг 3 – На этот раз мы можем вызвать AsEnumerable вместо ToList (), потому что нам на самом деле не нужен объект списка. Ожидая только результата, достаточно вызвать AsEnumerable, чтобы мы могли получить первый объект базы данных, возвращенный запросом с помощью First (). Это объект базы данных для tempdb1, и он имеет SelfLink, который мы можем использовать для вызова DeleteDatabaseAsync, который удаляет базу данных.

Шаг 4. Вам также необходимо вызвать задачу DeleteDatabase из задачи CreateDocumentClient после создания экземпляра DocumentClient.

Шаг 5 – Чтобы просмотреть список баз данных после удаления указанной базы данных, давайте снова вызовем метод GetDatabases.

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

Ниже приведен полный файл Program.cs.

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);
      }
		
   }
}

Когда приведенный выше код скомпилирован и выполнен, вы получите следующий вывод, содержащий идентификаторы базы данных и ресурсов трех баз данных и общее количество баз данных.

******** 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 

После удаления базы данных в конце вы также увидите, что в учетной записи DocumentDB остались только две базы данных.