salve,
iperione ha scritto:
se sei pratico di transact sql puoi farti un piccolo script con un loop apri il database di sistema che contiene il nome di tutte le tabelle e inizi loop ad ogni giro metti il nome della tabella in una varialebiel e puoi fare delete * from variabile fino alla fine della tabella questo ti svuota la tabella altrimenti divena più complesso cioè drop table e la ricrei ex novo ma non te lo consiglio
manca ancora la parte di reinizializzazione del valore di identity, ed in questo caso devi anche aggiungere DBCC CHECKIDENT utilizzando il reseed, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_dbcc_5lv8.asp..
puoi costruire ad esempio una tabella temporanea per la gestione della cosa sulla quale ciclare per l'esecuzione di DBCC CHECKIDENT. as esempio
SET NOCOUNT ON;
USE Pubs;
GO
CREATE TABLE #Obj (
TableName varchar(261),
ToDo tinyint
);
INSERT INTO #Obj
SELECT QUOTENAME(i.TABLE_SCHEMA, '[]') + '.' + QUOTENAME(i.TABLE_NAME, '[]') AS [Tabella],
OBJECTPROPERTY (object_id ( QUOTENAME(i.TABLE_SCHEMA, '[]') + '.' + QUOTENAME(i.TABLE_NAME, '[]')) , 'TableHasIdentity') AS [Identity]
FROM INFORMATION_SCHEMA.TABLES i
WHERE i.TABLE_TYPE = 'BASE TABLE'
AND OBJECTPROPERTY (object_id ( QUOTENAME(i.TABLE_SCHEMA, '[]') + '.' + QUOTENAME(i.TABLE_NAME, '[]')) , 'TableHasIdentity') = 1
AND i.TABLE_NAME <> 'dtproperties';
SELECT * FROM #Obj;
DECLARE @cmd varchar(500), @obj varchar(261);
WHILE 1 = 1 BEGIN
SELECT TOP 1 @obj = tablename FROM #Obj WHERE Todo = 1 ;
IF @@ROWCOUNT = 1 BEGIN
SELECT @cmd = 'DBCC CHECKIDENT ( ''' + @obj + ''' , RESEED, 1)';
SELECT @cmd;
EXEC(@cmd);
UPDATE #Obj SET ToDo = 0 WHERE TableName = + @obj ;
END;
ELSE
BREAK;
END;
DROP TABLE #Obj;
-- poi ricordati di mettere a posto la tabella
DBCC CHECKIDENT ( '[dbo].[jobs]')
che restituisce appunto
TableName ToDo
---------------------------------------------- ----
[dbo].[jobs] 1
----------------------------------------------------
DBCC CHECKIDENT ( '[dbo].[jobs]' , RESEED, 1)
Checking identity information: current identity value '14', current column value '1'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Checking identity information: current identity value '1', current column value '14'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
saluti