Contents

SCOM データベースの ETL テーブルをクリーンアップします

<本文>/images/Clean-up-the-ETL-table-for-SCOM-Database_ftimg.png

System Center Operations Manager のアップグレード プロセスには、ETL テーブルをクリーンアップし、データベースをグルーミングするように設計されたスクリプトが含まれています。ただし、Microsoft が提供するスクリプトを使用して、SCOM データベースの ETL テーブルを手動でクリーンアップし、アップグレードを高速化することができます。

クリーンアップが必要な相当数の行 (100,000 以上) が含まれるシナリオの場合、Microsoft は、SCOM アップグレードを開始する前にスクリプトを実行することをお勧めします。このアプローチは、アップグレード プロセスを加速し、セットアップ タイムアウトのリスクを最小限に抑えるのに役立ちます。

SQL データベースのコンテキストにおける ETL テーブルは、ETL (抽出、変換、ロード) プロセスで使用されるテーブルを指します。 ETL テーブルはデータ管理と分析において重要な役割を果たし、組織が複数のソースからのデータを効率的に統合して分析できるようにします。

/images/PatchMyPC-AppCatalog-725x250-1.jpg 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 データベースを右クリックして、新しいクエリ を選択します。

/images/Clean-up-the-ETL-table-for-SCOM-Database-Snap1-1024x817.png SCOM データベースの ETL テーブルをクリーンアップする

ETL クリーンアップ スクリプトを貼り付け、実行 をクリックします。 ETL のクリーンアップが完了するまでに数時間かかる場合があります。スクリプトの実行が完了したら、SSMS を閉じて、Operations Manager のアップグレードに進みます。

/images/Clean-up-the-ETL-table-for-SCOM-Database-Snap2-1024x568.png SCOM データベースの ETL テーブルをクリーンアップする

次を読む

まだサポートが必要ですか?

上記の記事についてさらにサポートが必要な場合、または他の技術的な問題について議論したい場合は、これらのオプションのいくつかを確認してください。

フォーラム

電報

連絡してください

*️⃣ 出典リンク:

SCOM アップグレード、 SQL データベースのコンテキストにおける ETL テーブル/images/PatchMyPC-AppCatalog-725x250-1.jpg

フォーラム

電報

連絡してください