2016-03-31 21 views
1

Microsoft Azure üzerinde çalışan bir SQL veritabanım var. Çok büyük olmasından kaçınmak için, periyodik olarak (örneğin, bir veya iki gün) onu kesmek zorundayım. truncate table xxx, çalıştırmam gereken SQL'dir.SQL Azure'da Microsoft veritabanında SQL veritabanı nasıl kırpılır

Bunu başarmanın en kolay yolu nedir? Yapmam gerekmediği sürece C# kodu yazmamayı tercih ederim. Kesintisiz bir SQL deyimi çalıştıran bir web işini kullanabilir miyim? Ya da bunu başarmak için Azure'da yerleşik SQL veritabanı işlevselliğini kullanabilir miyim? Teşekkürler!

+0

[Azure otomasyonunu] kullanmayı düşündünüz mü (https://azure.microsoft.com/en-gb/blog/azure-automation-your-sql-agent-in-the-cloud/)? – stuartd

cevap

0

SQL Azure henüz herhangi bir SQL Agent işlevselliğine sahip değildir, bu yüzden bir web işi (veya yürütmeniz gereken SQL'i çalıştıran bir JavaScript) oluşturmanız ve ardından işi zamanlamak için Azure Scheduler'ı kullanmanız gerekir.

Aynı şeyi yapmak için Powershell içeren Azure Automation'ı da kullanabilirsiniz.

+0

Merhaba Randy, Bu amaca ulaşmak için bir web işi oluşturmak için, bir .NET programlama dili kullanmak zorunda mıyım? – condor126

0

Bir Elastik veritabanı havuzu oluşturmak ve senin bunu tamamladıktan edilir pool.once sizin veritabanı, havuz veya tek veritabanında tüm veritabanları karşı görevlerin veya sorgu kümesi çalıştırabilirsiniz .. içerebilir

Daha burada bu konuda ..

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

+1

Ayrıca bir havuza eklemeniz gerekmez, sadece portal arayüzünü kullanmadan powershell aracılığıyla elastik işler oluşturabilir ve mevcut bir havuz olmadan çalışır. – cbattlegear

+0

Harika, teşekkürler bilmiyordum – TheGameiswar

1

Aslında periyodik olarak tabloları temizlemek için bir Azure Fonksiyonu ("TimeTrigger" tipi) de kullanabilir, burada almak için bir C# TimeTrigger Azure Fonksiyonu içine kullanmak için kod örneği Azure Sql Veritabanına bir bağlantı ve "sil" sql sorgularını çalıştır:

#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(); 
     } 
    } 
} 

Sonra Masmavi Azure Fonksiyonundan zamanlayıcı mantığı yapılandırabilirsiniz bir cron ifadesiyle alanı "entegre".