Reset ID di una lista sharePoint 2007
Per resettare l'ID di una lista sharepoint 2007 (MOSS) devi connetterti al database ed eseguire il seguente script.
L'unica condizione è che la lista non contenga nessun item, vanno prima cancellati.
Prima di eseguirla assicurati di essere sul corretto DB (di default inizia con STS_.... oppure WSS_Content o simile).
L'unica condizione è che la lista non contenga nessun item, vanno prima cancellati.
Prima di eseguirla assicurati di essere sul corretto DB (di default inizia con STS_.... oppure WSS_Content o simile).
Agisce direttamente sul DB di SharePoint, presta molta attenzione.
Per sicurezza, la prima volta, esegui lo script commentando l'istruzione update
Per sicurezza, la prima volta, esegui lo script commentando l'istruzione update
Prima di procedere Elimina completamente gli items dalla Recycle Bin (/sites/_layouts/AdminRecycleBin.aspx) altrimenti si crea un errore di violazione chiave con i nuovi inserimento
SQL
/*
* SharePoint 2007 MOSS
* Resetta l'ID della lista a 1
* solo se è vuota (non contiene item)
* 01-06-2007
* http://www.sgart.it
*/
DECLARE @Web nvarchar(128)
DECLARE @List nvarchar(128)
SET @Web = '' -- l'url relativo del sito senza '/' iniziale e finale
SET @List = 'Documents' -- il nome della lista
DECLARE @WebId uniqueidentifier
DECLARE @WebTitle nvarchar(128)
SELECT @WebId = id, @WebTitle=Title
FROM Webs
WHERE FullUrl = @Web
DECLARE @ListId uniqueidentifier
SELECT @ListId = ListId
FROM AllDocs
WHERE WebId = @WebId AND LeafName = @List
SELECT tp_title, tp_itemCount, tp_NextAvailableId,
tp_created, tp_ServerTemplate, tp_Description
FROM AllLists
WHERE tp_WebId = @WebId AND tp_Id = @ListId
IF @@rowcount > 1
BEGIN
SELECT 'Too lists'
END
ELSE
BEGIN
IF EXISTS(SELECT tp_itemCount
FROM AllLists
WHERE tp_WebId = @WebId AND tp_Id = @ListId
AND tp_itemCount = 0)
BEGIN
-- commentare l'istruzione update alla prima esecuzione
UPDATE AllLists
SET tp_NextAvailableId = 1
WHERE tp_WebId = @WebId AND tp_Id = @ListId
SELECT 'Reset ID to 1' AS MSG
SELECT tp_title, tp_itemCount, tp_NextAvailableId
FROM AllLists
WHERE tp_WebId = @WebId AND tp_Id = @ListId
END
ELSE
BEGIN
SELECT 'List Not empty' AS MSG
END
END