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

时间:2016-03-31 18:02:22

标签: c# sql-server azure azure-sql-database azure-storage

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

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

3 个答案:

答案 0 :(得分:1)

实际上,您可以使用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();
         }
    }
}

然后,您可以从Azure Azure功能配置计时器逻辑"集成" cron表达式的空格。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

此处有更多内容..

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