开发手册 欢迎您!
软件开发者资料库

DocumentDB - 删除数据库

DocumentDB删除数据库 - 从简介,优势,环境设置,创建,连接帐户,创建,列表,删除数据库,创建,删除集合,插入,查询,更新,删除文档,数据建模,数据类型,限制,排序等方面学习DocumentDB ,索引记录,地理空间数据,分区,数据迁移,访问控制,可视化数据。

您可以使用.Net SDK从门户网站以及代码中删除一个或多个数据库.在这里,我们将以逐步的方式讨论如何在DocumentDB中删除数据库.

步骤1 : 转到Azure门户上的DocumentDB帐户.出于演示的目的,我添加了另外两个数据库,如下面的屏幕截图所示.

删除数据库

第2步 : 要删除任何数据库,您需要单击该数据库.让我们选择tempdb,你会看到下面的页面,选择'删除数据库'选项.

删除数据库

第3步 : 它将显示确认消息,现在单击"是"按钮.

确认消息

您将看到仪表板中的tempdb不再可用.

TempDB已删除

您还可以使用.Net SDK从代码中删除数据库.要执行以下步骤:

步骤1 : 让我们通过指定要删除的数据库的ID来删除数据库,但我们需要它的SelfLink.

步骤2 : 我们像以前一样调用CreateDatabaseQuery,但这次我们实际上提供了一个查询,只返回一个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);}

第3步 : 这次,我们可以调用AsEnumerable而不是ToList(),因为我们实际上不需要列表对象.只考虑结果,调用AsEnumerable就足够了,以便我们可以使用First()获取查询返回的第一个数据库对象.这是tempdb1的数据库对象,它有一个SelfLink,可以用来调用删除数据库的DeleteDatabaseAsync.

步骤4 : 在实例化DocumentClient之后,还需要从CreateDocumentClient任务调用DeleteDatabase任务.

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

编译并执行上述代码时,您将收到以下输出,其中包含三个数据库的数据库和资源ID以及数据库总数.

******** 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帐户中.