これは初めてのことですので、やさしくしてください。私は2つのテーブルで何百万ものデータ行を削除する必要があります。これをSQLスクリプトで試してみると、ログファイルが非常に大きくなってしまい、すべてのハードドライブを占有して完了しませんでした。私は、データがバッチで削除された場合、ログファイルが同じように影響を受けることはないという、オンラインでいくつかの記事を読んでいました。現在シンプルモードのデータベースで、常にそのように保たれています。これは私がデータを削除するために使用するスクリプトです。バッチ内のデータ行を削除する
Delete from EligibilityInformation Where DateEntered <= DateAdd(day,-31, getdate())
Delete from EligibilityRequestLog Where ActualPostingDate <= DateAdd(day,-31, getdate())
誰かが私はすべての行が削除されるまでの時間でデータの10,000行を削除するSQLジョブとして追加することができますスクリプトで私を助けることができますか?私は、オンラインで次のスクリプトを見つけました。それは私が必要以上に多いかもしれません。 SQLスクリプトを追加しました。
DECLARE @continue INT
DECLARE @rowcount INT
SET @continue = 1
WHILE @continue = 1
BEGIN
PRINT GETDATE()
SET ROWCOUNT 10000
BEGIN TRANSACTION
Delete from EligibilityInformation Where DateEntered <= DateAdd(day,-31, getdate())
Delete from EligibilityRequestLog Where ActualPostingDate <= DateAdd(day,-31, getdate())
SET @rowcount = @@rowcount
COMMIT
PRINT GETDATE()
IF @rowcount = 0
BEGIN
SET @continue = 0
END
END
以外の何ものでもありませんか?各SQLダイアレクトは異なり、各エンジンは異なる方法で動作します。 MS SQL Serverのようですが、もしそうなら、どのバージョンですか?それが2008+であれば、 'TOP'を使用して10,000行だけを削除し、行が削除されなくなるまでループできます。https://technet.microsoft.com/en-us/library/ms175486(v=sql.105) ).aspxまた、あなたが見つけたスクリプトがあなたのニーズに合っていないのはなぜですか? – MatBailie
これはSQL 2014です。スクリプトが動作するかどうかわかりません。私はそれを試していない。 –
Errrrrrrrr、それを試してみる? – MatBailie