SCOM データベースの ETL テーブルをクリーンアップします
<本文>
System Center Operations Manager のアップグレード プロセスには、ETL テーブルをクリーンアップし、データベースをグルーミングするように設計されたスクリプトが含まれています。ただし、Microsoft が提供するスクリプトを使用して、SCOM データベースの ETL テーブルを手動でクリーンアップし、アップグレードを高速化することができます。
クリーンアップが必要な相当数の行 (100,000 以上) が含まれるシナリオの場合、Microsoft は、SCOM アップグレードを開始する前にスクリプトを実行することをお勧めします。このアプローチは、アップグレード プロセスを加速し、セットアップ タイムアウトのリスクを最小限に抑えるのに役立ちます。
SQL データベースのコンテキストにおける ETL テーブルは、ETL (抽出、変換、ロード) プロセスで使用されるテーブルを指します。 ETL テーブルはデータ管理と分析において重要な役割を果たし、組織が複数のソースからのデータを効率的に統合して分析できるようにします。
Patch My PC を使用してサードパーティ アプリケーションをインストールおよび更新する
ETL テーブルをクリーンアップするスクリプト
Microsoft による以下のスクリプトを使用すると、ETL テーブルをクリーンアップし、データベースを整理できます。このスクリプトは、トランザクション ログがいっぱいになるのを避けるために、ループ内の ETL エントリを一度に 100,000 行ずつグルーミングします。大量の ETL 行をグルーミングする Operations Manager データベースをホストする SQL Server 上でスクリプトを実行する必要があります。
-- (c) Copyright 2004-2006 Microsoft Corporation, All Rights Reserved
---- Proprietary and confidential to Microsoft Corporation
--
-- File:
CatchupETLGrooming.sql
---- Contents: A bug in the ETL grooming code could have left the user
---- Database with a large amount of ETL rows to groom. This script will groom
---- The ETL entries in a loop 100K rows at a time to avoid filling up the
---- Transaction log
----------------------------------------------------------------------------------DECLARE @RowCount int = 1;DECLARE @BatchSize int = 100000;DECLARE @SubscriptionWatermark bigint = 0;
DECLARE @LastErr int;-- Delete rows from the EntityTransactionLog. We delete the rows with TransactionLogId that aren't being-- used anymore by the EntityChangeLog table and by the RelatedEntityChangeLog table.SELECT @SubscriptionWatermark = dbo.fn_GetEntityChangeLogGroomingWatermark();WHILE(@RowCount > 0)BEGIN
DELETE TOP(@BatchSize) ETL
FROM EntityTransactionLog ETL
WHERE NOT EXISTS (SELECT 1 FROM EntityChangeLog ECL WHERE ECL.EntityTransactionLogId = ETL.EntityTransactionLogId) AND NOT EXISTS (SELECT 1 FROM RelatedEntityChangeLog RECL
WHERE RECL.EntityTransactionLogId = ETL.EntityTransactionLogId)
AND ETL.EntityTransactionLogId < @SubscriptionWatermark;
SELECT @LastErr = @@ERROR, @RowCount = @@ROWCOUNT;
END
コピー
-- (c) Copyright 2004-2006 Microsoft Corporation, All Rights Reserved --
-- Proprietary and confidential to Microsoft Corporation--
-- File:CatchupETLGrooming.sql--
-- Contents: A bug in the ETL grooming code could have left the user--
-- Database with a large amount of ETL rows to groom. This script will groom--
-- The ETL entries in a loop 100K rows at a time to avoid filling up the--
-- Transaction log--
--------------------------------------------------------------------------------
DECLARE
@RowCount
int
=
1
;
DECLARE
@BatchSize
int
=
100000
;
DECLARE
@SubscriptionWatermark
bigint
=
0
;
DECLARE
@LastErr
int
;
-- Delete rows from the EntityTransactionLog. We delete the rows with TransactionLogId that aren't being
-- used anymore by the EntityChangeLog table and by the RelatedEntityChangeLog table.
SELECT
@SubscriptionWatermark
=
dbo
.
fn\_GetEntityChangeLogGroomingWatermark
();
WHILE
(@RowCount
>
0
)
BEGIN
DELETE
TOP
(@BatchSize) ETL
FROM
EntityTransactionLog ETL
WHERE
NOT
EXISTS
(
SELECT
1
FROM
EntityChangeLog ECL
WHERE
ECL
.
EntityTransactionLogId
=
ETL
.
EntityTransactionLogId
)
AND
NOT
EXISTS
(
SELECT
1
FROM
RelatedEntityChangeLog RECL
WHERE
RECL
.
EntityTransactionLogId
=
ETL
.
EntityTransactionLogId
)
AND
ETL
.
EntityTransactionLogId
<
@SubscriptionWatermark;
SELECT
@LastErr
=
@@ERROR, @RowCount
=
@@ROWCOUNT;
END
SCOM データベースで ETL グルーミング スクリプトを実行する
Operations Manager データベースをホストしている SQL Server にサインインします。 SQL Server Management Studio を起動し、データベース エンジンに接続します。 データベース を展開し、OperationsManager データベースを右クリックして、新しいクエリ を選択します。
SCOM データベースの ETL テーブルをクリーンアップする
ETL クリーンアップ スクリプトを貼り付け、実行 をクリックします。 ETL のクリーンアップが完了するまでに数時間かかる場合があります。スクリプトの実行が完了したら、SSMS を閉じて、Operations Manager のアップグレードに進みます。
SCOM データベースの ETL テーブルをクリーンアップする
次を読む
まだサポートが必要ですか?
上記の記事についてさらにサポートが必要な場合、または他の技術的な問題について議論したい場合は、これらのオプションのいくつかを確認してください。
フォーラム
電報
連絡してください
*️⃣ 出典リンク:
SCOM アップグレード、
SQL データベースのコンテキストにおける ETL テーブル 、
、
フォーラム
、 電報、
連絡してください
、