Azure-Sql-Database

數據庫大小大於 200GB 時要刪除的 SQL 查詢

  • November 16, 2016

我有一個SQL用於儲存大量日誌的表。

我想要一個儲存過程或類似的東西。只要數據庫大小超過 200GB,它就會每分鐘執行一次,並從日誌表的末尾刪除項目。

所以像:

While(databaseSize > 200GB)
{
Batch delete 100 entires From [dbo].[logs] OrderBy DateTime
}

我該怎麼做呢?

$$ Edit $$ SQL Azure 將我的數據庫大小限制為 250GB。因此,為什麼我需要限制並仍然為其他表保留一個小緩衝區。

在維護計劃中執行這樣的東西,比如每小時

While((select count(*) from From [dbo].[logs]) > 1000000)
begin
   delete top (10000) From [dbo].[logs] OrderBy DateTime
end

若要按計劃執行腳本,您需要使用 Azure 自動化服務建構 PowerShell 工作流。Azure 的文件站點在這裡有一個很好的演練。

我還會注意到,此產品的更好版本是“彈性工作”。它將提供更多的控制和功能,更接近 SQL 代理為內部部署所做的工作。他們現在正在為以前的私人開放投票,但你可以從 Mark Vaillancourt 那裡閱讀更多關於此的資訊。

請記住,Azure SQL 數據庫仍然像本地 SQL Server 中的任何其他數據庫一樣具有日誌,因此請確保您的刪除查詢已針對日誌使用進行了優化。它可以確保刪除有效地執行並且不會長時間鎖定表。

引用自:https://dba.stackexchange.com/questions/155352