Oprava: Databáze správy datového skladu roste velmi velké po povolení funkce kolekcí dat v SQL Server 2008

Společnost Microsoft distribuuje opravy Microsoft SQL Server 2008 jako jednoho souboru ke stažení. Protože jsou kumulativní opravy, každá nová verze tedy obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release.

Příznaky

V Microsoft SQL Server 2008 po povolení funkce kolekcí dat databáze správy datového skladu roste velmi velké a může vyčerpat místo na disku.

Navíc pokud spustíte následující dotazy, najdete mnoho opuštěných řádků v tabulkách snapshots.notable_query_plan a snapshots.notable_query_text:
SELECT COUNT(*)FROM snapshots.notable_query_plan AS qp 
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qp.[sql_handle] AND qs.plan_handle = qp.plan_handle
AND qs.plan_generation_num = qp.plan_generation_num
AND qs.statement_start_offset = qp.statement_start_offset
AND qs.statement_end_offset = qp.statement_end_offset
AND qs.creation_time = qp.creation_time);

SELECT COUNT(*)FROM snapshots.notable_query_text AS qt
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qt.[sql_handle]);

Příčina

Proces odstranění obecný odstraní data, která odpovídá specifické snímek ID. Však řádky plánu dotazu a dotaz textové řádky nemusí odpovídat specifické snímek ID. Proto tyto řádky nejsou odstraněny procesem obecný odstranění.

Řešení

SQL Server 2008

Důležité: Tato oprava musíte použít, pokud používáte verzi systému SQL Server 2008.

Oprava tohoto problému byla vydána nejprve v kumulativní aktualizace 6. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
971490 kumulativní aktualizace 6 pro SQL Server 2008
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
956909 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008

SQL Server 2008 Service Pack 1

Důležité: Tato oprava musíte použít, pokud používáte systém SQL Server 2008 Service Pack 1.


Oprava tohoto problému byla vydána nejprve v kumulativní aktualizace 4 pro SQL Server 2008 Service Pack 1. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
973602 kumulativní aktualizace 4 pro SQL Server 2008 Service Pack 1
Poznámka: Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Společnost Microsoft doporučuje zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
970365 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. Opravy hotfix serveru SQL Server 2008 Service Pack 1 musí použít k instalaci aplikace SQL Server 2008 Service Pack 1. Ve výchozím žádné opravy hotfix, která je poskytována v aktualizace service pack serveru SQL Server je součástí další aktualizaci service pack pro SQL Server.

Jak potíže obejít

Chcete-li tento problém vyřešit pomocí následujících skriptů v správní datový sklad databáze odstranit tyto řádky pro vzácná onemocnění:
-- Purge snapshots.notable_query_plan table DECLARE @delete_batch_size bigint;
DECLARE @rows_affected int;
SET @delete_batch_size = 500;
SET @rows_affected = @delete_batch_size;
WHILE (@rows_affected = @delete_batch_size)
BEGIN
DELETE TOP (@delete_batch_size) snapshots.notable_query_plan
FROM snapshots.notable_query_plan AS qp
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qp.[sql_handle] AND qs.plan_handle = qp.plan_handle
AND qs.plan_generation_num = qp.plan_generation_num
AND qs.statement_start_offset = qp.statement_start_offset
AND qs.statement_end_offset = qp.statement_end_offset
AND qs.creation_time = qp.creation_time);
SET @rows_affected = @@ROWCOUNT;
RAISERROR ('Deleted %d orphaned rows from snapshots.notable_query_plan', 0, 1, @rows_affected) WITH NOWAIT;
END;

-- Purge snapshots.notable_query_text table
SET @rows_affected = @delete_batch_size;
WHILE (@rows_affected = @delete_batch_size)
BEGIN
DELETE TOP (@delete_batch_size) snapshots.notable_query_text
FROM snapshots.notable_query_text AS qt
WHERE NOT EXISTS (
SELECT *
FROM snapshots.query_stats AS qs
WHERE qs.[sql_handle] = qt.[sql_handle]);
SET @rows_affected = @@ROWCOUNT;
RAISERROR ('Deleted %d orphaned rows from snapshots.notable_query_text', 0, 1, @rows_affected) WITH NOWAIT;
END;

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Odkazy

Další informace o přírůstkové Model servis pro SQL Server získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

935897 dílčí Model obsluhy je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potíže



Další informace o schéma názvů pro aktualizace serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:

822499 Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server pro


Pro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:
824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft
Vlastnosti

ID článku: 970014 - Poslední kontrola: 13. 1. 2017 - Revize: 1

Váš názor