0
テーブルの切り捨てを実行するために必要な700万行程度のテーブルがあります。私は次のようにこれを行うつもりです:永続テーブルを切り捨てた後に永続テーブルに挿入されるレコードを保持するSQL Serverのテーブル変数を作成
BEGIN TRY
BEGIN TRANSACTION
Declare @RecsToKeep Table
(
Id int
)
SELECT Id
FROM RealTable
Where CONVERT (DATE, CreatedDate) > '2017-08-16'
Declare @KeepTheseRecs Table
(
Id int
)
Insert into @KeepTheseRecs
Select *
From RealTable Where Id IN (Select Id From @RecsToKeep)
Truncate Table RealTable
Insert into RealTable
Select *
From @KeepTheseRecs
COMMIT
END TRY
BEGIN CATCH
ROLLBACK
END CATCH
実際のテーブルとテーブルの変数は、同じ列構造を持っています。これを行う正しい方法ですか?
挿入に失敗してデータが失われたらどうなりますか?少なくともトランザクションなしで危険だと思われる。私は、監査表を検討する価値があると思います。 –