Fehler bei collection_set_3_upload

Gelegentlich liest man von Fehlern bei diesem Job. Im Jobverlauf findet man dann z. B. diese Bechreibung: "Violation of PRIMARY KEY constraint 'PK_active_sessions_and_requests'. Cannot insert duplicate key in object 'snapshots.active_sessions_and_requests'.

Wenn man sich nicht in die Tiefen dieser Verarbeitung für die Systemdaten-Sammlung einarbeiten möchte und auch auf einige Daten der Datensammlung verzichten kann, scheint folgender Weg erfolgsversprechend zu sein:

  • Auf dem Server sucht man das Verzeichnis, in dem die temporären Dateien liegen, die hochgeladen werden sollen. Dies ist z. B. \\<servername>\C$\Users\<Konto des SQL Server Agents>\AppData\Local\Temp
    falls es ein Server mit W2K3 ist, dann findet man die Dateien in der Regel hier: C:\Documents and Settings\<Konto des SQL Server Agents>\Local Settings\Temp
  • Die älteste CACHE-Datei dort, sollte diejenige mit den doppelten Sätzen sein. Man kann dies auch anhand des Datums überprüfen, welches in der Fehlermeldung oben noch als Wert für den doppelten Schlüssel angegeben wurde.
  • Man kann die Datei löschen und den Job erneut starten. Die Verarbeitung sollte wieder funktionieren und die alten Dateien nach der Verarbeitung verschwunden sein.

SQL Server 2008

Hier gestaltet sich die Analyse unter Umständen etwas schwieriger. Das folgende Skript sollte helfen der Ursache auf die Sprünge zu kommen.

SELECT MAX(ID) FROM msdb..sysssislog;  -- let it be 12345678

-- increase the logging level from 0 to 1
UPDATE msdb..syscollector_collection_sets
SET logging_level = 1 -- from 0
WHERE name = 'Query Statistics';

--Now run the job "collection_set_3_upload" manually
--check the latest entries in the table

SELECT * FROM msdb..sysssislog WHERE id >12345678; --- replace this with the proper value

--Check the "Message" column, which actually stores the exact error message.
--Once you fix this issue, change the logging back to 0

UPDATE msdb..syscollector_collection_sets
SET logging_level = 0
WHERE name = 'Query Statistics';

Sommerzeitumstellung

Zufall oder nicht, bei mir trat der Fehler mit einer Datei auf, in der genau der Zeitraum der herbstlichen Sommerzeitumstellung enthalten war. Da haben wir ja auch zweimal die Zeit von 2:00 Uhr bis 3:00 Uhr!.

SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "The statement has been terminated.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "Violation of PRIMARY KEY constraint 'PK_active_sessions_and_requests'. Cannot insert duplicate key in object 'snapshots.active_sessions_and_requests'. The duplicate key value is (578211, 2012-10-28 02:58:11.7970000 +02:00, 1).".