大きなテーブル ( 160Gb )を分割しようとしています。過去 70 日間IIS logs
に生成されたデータが含まれています。partition スキームと関数は、テーブルを関連する日に分割します。
各ファイル グループには 1 つのファイルがあり、各ファイルには 1 日のデータが入ります。
現在、テーブルにはクラスター化されたインデックスはありません。ログが作成された頃に 2 つの非クラスター化インデックスがあり、データから取得された ASP セッション ID があります。
私が抱えている問題は、このテーブルをパーティション分割するように割り当てようとすると、ディスク容量が不足することです。
プロセスをバッチ処理する方法はありますか?
USE [Diagnostic_MB]
GO
BEGIN TRANSACTION
CREATE CLUSTERED INDEX [ClusteredIndex_on_Scheme70Day_634883295513235207] ON [dbo].[IISLog]
(
[SentUTCDateTime]
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [Scheme70Day]([SentUTCDateTime])
DROP INDEX [ClusteredIndex_on_Scheme70Day_634883295513235207] ON [dbo].[IISLog] WITH ( ONLINE = OFF )
CREATE NONCLUSTERED INDEX [ASPSession] ON [dbo].[IISLog]
(
[ASPSessionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Scheme70Day]([SentUTCDateTime])
CREATE NONCLUSTERED INDEX [IX_Time] ON [dbo].[IISLog]
(
[SentUTCDateTime] ASC
)
INCLUDE ( [csHost],
[scStatus],
[timeTaken]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [Scheme70Day]([SentUTCDateTime])
COMMIT TRANSACTION
これは、最終的にすべてのディスク スペースを消費するコードです。理想的には、コピーを作成するのではなく、プライマリ ファイル グループからデータを移動できるようにしたいと考えています。これは常に稼働している必要があるデータベースではないため、offline solutions are also welcome...