DocumentDB - удаление баз данных
Вы можете удалить базу данных или базы данных с портала, а также из кода с помощью .Net SDK. Здесь мы пошагово обсудим, как удалить базу данных в DocumentDB.
Step 1- Перейдите в свою учетную запись DocumentDB на портале Azure. Для демонстрации я добавил еще две базы данных, как показано на следующем снимке экрана.
Step 2- Чтобы удалить любую базу данных, вам нужно щелкнуть эту базу данных. Давайте выберем tempdb, вы увидите следующую страницу, выберите опцию «Удалить базу данных».
Step 3 - Появится подтверждающее сообщение, теперь нажмите кнопку «Да».
Вы увидите, что база данных tempdb больше не доступна на вашей панели инструментов.
Вы также можете удалить базы данных из своего кода с помощью .Net SDK. Чтобы сделать следующие шаги.
Step 1 - Давайте удалим базу данных, указав ID базы данных, которую мы хотим удалить, но нам нужна ее SelfLink.
Step 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);
}
Step 3- На этот раз мы можем вызвать AsEnumerable вместо ToList (), потому что нам фактически не нужен объект списка. Ожидая только результата, вызова AsEnumerable достаточно, чтобы мы могли получить первый объект базы данных, возвращенный запросом с помощью First (). Это объект базы данных для tempdb1, и у него есть SelfLink, который мы можем использовать для вызова DeleteDatabaseAsync, который удаляет базу данных.
Step 4 - Вам также необходимо вызвать задачу DeleteDatabase из задачи CreateDocumentClient после создания экземпляра DocumentClient.
Step 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 остались только две базы данных.