繁体   English   中英

如何定期截断 Microsoft Azure 上的 SQL 数据库

[英]How to truncate SQL database on Microsoft Azure periodically

我有一个在 Microsoft Azure 上运行的 SQL 数据库。 为了防止它变得太大,我必须定期截断它(例如,一两天)。 truncate table xxx是我需要执行的 SQL。

那么实现这一目标的最简单方法是什么? 我宁愿不编写任何 C# 代码,除非我必须这样做。 我可以使用连续运行截断 SQL 语句的 Web 作业吗? 或者我可以使用 Azure 上的 SQL 数据库的内置功能来实现这一点吗? 谢谢!

实际上,您可以使用 Azure 函数(“TimeTrigger”类型)来定期清除您的表,以下是在 C# TimeTrigger Azure 函数中使用的代码示例,以获取与 Azure Sql 数据库的连接并执行“删除”sql 查询:

#r "System.Data"

using System;
using System.Data.SqlClient;

public static async Task Run(TimerInfo myTimer, TraceWriter log)
{

    string userName = "*******";
    string passWord = "********";
    var connectionString = $"Server=tcp:work-on-  sqlazure.database.windows.net,1433;Data Source=work-on-sqlazure.database.windows.net;Initial Catalog=VideoStore;Persist Security Info=False;User ID={userName};Password={passWord};Pooling=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";

    using(SqlConnection cns = new SqlConnection(connectionString))
    {
         cns.Open();
         var truncateUserTable = "DELETE FROM Video";

         using(SqlCommand cmd = new SqlCommand(truncateUserTable, cns))
         {
             int rowsDeleted = await cmd.ExecuteNonQueryAsync();
         }
    }
}

然后,您可以使用cron表达式从 Azure Azure 函数“集成”空间配置计时器逻辑。

SQL Azure 还没有任何类型的 SQL 代理功能,因此您必须创建一个 Web 作业(或一些执行您需要执行的 SQL 的 JavaScript),然后使用 Azure 调度程序来安排作业。

您还可以使用涉及 Powershell 的 Azure 自动化来执行相同的操作。

您可以创建一个弹性数据库池并将您的数据库包含在池中。完成此操作后,您可以对池中的所有数据库或单个数据库运行一组任务或查询。

更多关于这里..

https://azure.microsoft.com/en-in/documentation/articles/sql-database-elastic-jobs-overview/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM