DocumentDB - Usuń bazy danych
Bazę danych lub bazy danych można usunąć z portalu, a także z kodu za pomocą .Net SDK. Tutaj omówimy krok po kroku, jak upuścić bazę danych w DocumentDB.
Step 1- Przejdź do swojego konta DocumentDB w witrynie Azure Portal. Do celów demonstracyjnych dodałem jeszcze dwie bazy danych, jak widać na poniższym zrzucie ekranu.
Step 2- Aby usunąć dowolną bazę danych, musisz ją kliknąć. Wybierzmy tempdb, zobaczysz następującą stronę, wybierz opcję „Usuń bazę danych”.
Step 3 - Wyświetli się komunikat potwierdzający, teraz kliknij przycisk „Tak”.
Zobaczysz, że baza danych tempdb nie jest już dostępna na pulpicie nawigacyjnym.
Możesz również usunąć bazy danych z kodu za pomocą .Net SDK. Aby wykonać następujące czynności.
Step 1 - Usuńmy bazę danych, podając identyfikator bazy danych, którą chcemy usunąć, ale potrzebujemy jej SelfLink.
Step 2 - Wywołujemy CreateDatabaseQuery tak jak poprzednio, ale tym razem faktycznie dostarczamy zapytanie, aby zwrócić tylko jedną bazę danych o identyfikatorze 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- Tym razem możemy wywołać AsEnumerable zamiast ToList (), ponieważ tak naprawdę nie potrzebujemy obiektu listy. Oczekiwanie tylko wyniku, wywołanie AsEnumerable jest wystarczające, abyśmy mogli pobrać pierwszy obiekt bazy danych zwrócony przez zapytanie z First (). To jest obiekt bazy danych dla tempdb1 i ma SelfLink, którego możemy użyć do wywołania metody DeleteDatabaseAsync, która usuwa bazę danych.
Step 4 - Należy również wywołać zadanie DeleteDatabase z zadania CreateDocumentClient po utworzeniu wystąpienia DocumentClient.
Step 5 - Aby wyświetlić listę baz danych po usunięciu określonej bazy danych, ponownie wywołajmy metodę GetDatabases.
using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
//await CreateDatabase(client);
GetDatabases(client);
await DeleteDatabase(client);
GetDatabases(client);
}
Poniżej znajduje się jak dotąd pełny plik 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);
}
}
}
Kiedy powyższy kod zostanie skompilowany i wykonany, otrzymasz następujące dane wyjściowe, które zawierają identyfikatory bazy danych i zasobów trzech baz danych oraz całkowitą liczbę baz danych.
******** 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
Po usunięciu bazy danych zobaczysz również na końcu, że na koncie DocumentDB pozostały tylko dwie bazy danych.