我在Microsoft Azure上运行了一个SQL数据库。为了防止它变得太大,我必须定期截断它(例如,一两天)。
truncate table xxx
是我需要执行的SQL。
那么实现这一目标的最简单方法是什么?我不想写任何C#代码,除非我必须这样做。我可以使用连续运行截断SQL语句的Web作业吗?或者我可以在Azure上使用SQL数据库的内置功能来实现这一目标吗?谢谢!
答案 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/