Condividi tramite


La dichiarazione automatica degli elementi come record causa duplicati in SharePoint Server

Numero KB originale: 2905419

Sintomi

È possibile creare una raccolta siti usando il modello Centro record in Microsoft SharePoint Server 2010 o Microsoft SharePoint Server 2013. Quando si aggiorna il nuovo contenuto alla raccolta drop off predefinita in questa raccolta siti, viene visualizzato il messaggio di errore seguente:

Microsoft SharePoint Server 2010: Errore
Questo elemento non può essere eliminato, spostato o rinominato perché è in attesa o è un record che blocca l'eliminazione.

Microsoft SharePoint Server 2013:
Si è verificato un errore.
Questo elemento non può essere eliminato, spostato o rinominato perché è in attesa o è un record che blocca l'eliminazione.

L'elemento caricato viene dichiarato automaticamente come record e copiato in una delle librerie di destinazione in base alla configurazione delle regole della libreria del contenuto. Questo errore viene visualizzato anche se si tenta di eliminare questi elementi copiati dalla rispettiva raccolta di drop off o record.

Lo stato della dichiarazione di questo elemento non cambia anche se si tenta di annullarne la dichiarazione nella sezione Dettagli conformità . Se si modifica questo elemento nella libreria Drop Off anche senza alcuna modifica e invio, viene creato un nuovo elemento duplicato nella raccolta record. Il nome di questo elemento duplicato viene aggiunto con un ID generato automaticamente univoco.

Se si disabilita la dichiarazione automatica degli elementi e si abilita la dichiarazione manuale degli elementi, è possibile eliminare gli elementi della raccolta Disattivi. Tuttavia, gli elementi della libreria di record rimangono duplicati che non possono essere eliminati.

Causa

Ciò si verifica perché l'operazione di spostamento di un elemento da una libreria a un'altra viene completata in due fasi. Prima viene copiato dall'origine alla destinazione e quindi eliminato dall'origine. In questo caso, l'origine è la libreria Drop Off e dichiara gli elementi come record non appena vengono caricati. Poiché gli elementi vengono dichiarati come record in una raccolta drop off, non possono essere eliminati. Dopo il caricamento, vengono eseguite le regole dell'organizzatore del contenuto per spostare l'elemento nella destinazione. L'operazione di copia viene completata correttamente e l'elemento è disponibile nella destinazione. Tuttavia, poiché è dichiarato, l'elemento non può essere eliminato nella libreria Drop Off. Se si tenta di eliminare questo elemento, si verificherà l'errore indicato in precedenza.

Se si modificano le proprietà dell'elemento, le regole della libreria verranno eseguite di nuovo, ripetendo la procedura. Questa volta, poiché il documento è già presente nella destinazione, il nome dell'elemento viene suffisso con un ID univoco.

Quando la libreria Drop Off viene modificata per consentire la dichiarazione manuale dei record, tali elementi possono essere eliminati dopo averli annullati. Quando un elemento in una libreria di record viene modificato, l'elemento non può essere eliminato, perché la libreria non modifica lo stato di dichiarazione di questo elemento.

Risoluzione

Passaggio 1: Correggere i duplicati della libreria drop off

Aggiornare la libreria Drop Off in modo che non dichiari automaticamente gli elementi come record. La raccolta Drop Off viene usata per eliminare i documenti in un'unica posizione che può essere soggetta a molte regole della libreria del contenuto.

In questo modo, gli eventuali nuovi elementi caricati nella libreria Drop Off non causano la duplicazione o generano un errore. Abilitare la dichiarazione manuale dei record nella raccolta Drop Off in modo che sia possibile eliminare i documenti esistenti dopo averli annullati e pulire la raccolta Drop Off.

Passaggio 2 Correzione dei duplicati della libreria di record

Per correggere i duplicati esistenti nella libreria di record, seguire questa procedura:

  1. Eliminare il ricevitore di eventi eseguito durante l'azione di eliminazione dell'elemento.
  2. Eliminare i record duplicati.
  3. Aggiungere nuovamente il ricevitore di eventi.

La sezione seguente elenca i passaggi in dettaglio:

Importante

L'eliminazione del ricevitore di eventi eseguito durante il tentativo di eliminazione consentirà l'eliminazione di qualsiasi documento. Sono inclusi tutti i documenti legittimi che non devono essere eliminati. Testare prima questi passaggi in un ambiente di test. Prendere estrema precauzione assicurandosi che il sito non sia disponibile per gli utenti durante questo esercizio in modo che gli utenti non elimini altri documenti.

  1. In SharePoint Management Shell eseguire lo script seguente per elencare tutti i ricevitori di eventi:

    $problemweb = Get-SPWeb http://<Your Site Collection>
    $problemlist = $problemweb.Lists["<Record Library Name>"]
    $problemlist.EventReceivers | select type, name
    

    Nota

    È necessario sostituire <yourSiteCollection> e <rocrdr listbrayt name> con il valore corretto.

    In questo output calcolare la posizione del tipo di ricevitore di ItemDeleting eventi partendo dall'inizio come numero di posizione 0 incrementando la sequenza del ricevitore di eventi successivo.

    Nell'output seguente, ad esempio, il ricevitore di ItemDeleting eventi si trova nella seconda posizione nella matrice. Quindi, il numero di posizione è 1 in quanto le matrici iniziano con 0:

    Type Name
    ---- ----
    ItemUpdating ECM_RecordEventReceiver
    ItemDeleting ECM_RecordEventReceiver
    ItemFileMoving ECM_RecordEventReceiver
    ItemAdded Document ID Generator
    ItemAdded ECM_RecordEventReceiver
    ItemUpdated Document ID Generator
    ItemUpdated ECM_RecordEventReceiver
    ItemCheckedIn Document ID Generator
    ItemCheckedIn ECM_RecordEventReceiver
    ItemUncheckedOut Document ID Generator
    
  2. Assicurarsi che la posizione della matrice punti al ricevitore di ItemDeleting eventi:

    $problemev = $problemlist.EventReceivers[Position of the "ItemDeleting" event receiver]
    

    Ad esempio:

    $problemev = $problemlist.EventReceivers[1]
    
  3. Eliminare il ricevitore di eventi ItemDeleting:

    $problemev.Delete()
    
  4. Aggiornare l'elenco:

    $problemlist.update()
    
  5. Rimuovere i duplicati dalla libreria di record usando il browser.

  6. Eseguire lo script seguente per ricreare il ricevitore di ItemDeleting eventi:

    $problemevadded = $problemlist.EventReceivers.Add([Microsoft.SharePoint.SPEventReceiverType]::ItemDeleting,"Microsoft.Office.Policy, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c","Microsoft.Office.RecordsManagement.Internal.HoldEventReceiver")
    $problemlist.update()
    

Ulteriori informazioni

Il ricevitore ItemDeleting di eventi è di tipo SPEventReceiver. La fornitura di receiverTypee classNameAssembly tramite questo metodo consente di creare il ricevitore di eventi.