イベント ハブに接続しながら、ストリーム分析を使用して Azure SQL データベースにデータを取り込んでいます。私がやろうとしているのは、テーブルからデータを定期的に削除して、保存された日数だけを維持することです。例: 30 日。
データベースに対して必要な T-SQL を定期的に実行する方法を追跡しようとしていたところ、解決策として Azure Elastic ジョブを見つけました。
https://learn.microsoft.com/en-us/azure/azure-sql/database/elastic-jobs-tsql-create-manage
これは、Azure SQL データベースから行を定期的に削除する最良の方法ですか?
おそらく、Azure Data Factory は、任意のスケジュールで実行されるように設定されています。
– ティム・マイロット
2020 年 9 月 4 日 21:04
こんにちは @TsSkTo さん。回答が役に立った場合は、回答として受け入れていただければ幸いです。これは、コミュニティの他のメンバーにとって有益となる可能性があります。ありがとうございます。
– レオン・ユエ
2020 年 9 月 8 日 0:04
------------------------
削除するストアド プロシージャを作成できますテーブル内のデータ。
それを実現する方法はたくさんあります。
Data Factory で、時間トリガーを使用して削除ストアド プロシージャを呼び出すパイプラインを毎月作成します。
ロジック アプリを使用して、削除ストアド プロシージャを呼び出す繰り返しトリガーを作成します。
見つけた Azure Elastic ジョブを試してみるのもいいでしょう。
自分にとって最も簡単だと思う方法を選択してください。Azure SQL データベースから行を定期的に削除するには、それが最適な方法だと思います。
1
ロジック アプリは、ああ、行きます。シンプルかつビジュアル。まさに私が探していたものです。
– TsSkTo
2020 年 9 月 25 日 19:25
------------------------
テンポラル テーブルには保存期間があります。あなたのユースケースに適している場合は、これを検討してください。それ以外の場合は、ジョブ フレームワークを使用して、前述したように 1 日に 1 回古いデータを削除できます。
------------------------
Azure Automation を使用して、クリーンアップを行うストアド プロシージャを実行することもできます。次の電源を実行できますRunBook のシェル (Azure Automation)。
$sqlSvrName=“DBServerName"
$sqlDbName=“DatabaseName"
$sqlUserName=“DatabaseUserName"
$sqlPassword=“DatabaseUserPassword"
$sqlStoredProcedure=“StoredProcedureName"
$sqlConnection = New-Object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = “Server=$sqlSvrName;uid=$sqlUserName;pwd=$sqlPassword;Initial Catalog=$sqlDbName“
$startDateTime = Get-Date
$sqlConnection.Open()
select $sqlConnection.ConnectionString
$sqlCmd = New-Object System.Data.SqlClient.SqlCommand
# specify that command is a stored procedure
$sqlCmd.CommandType=[System.Data.CommandType]'StoredProcedure'
# specify the name of the stored procedure
$sqlCmd.CommandText = $sqlStoredProcedure
$sqlCmd.Connection = $sqlConnection
#————- specify optional parameters to stored procedure
#$startDateTime=$sqlCmd.Parameters.Add(“@rundatetime" , [System.Data.SqlDbType]::DateTime)
$startDateTime = Get-Date
$sqlCmd.ExecuteNonQuery()
Azure Automation でこれを行うための完全な手順については、ここをお読みください。