Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come eseguire il reseeding automatico dopo aver utilizzato identity_insert?

Utilizza le informazioni in questo link in combinazione con una funzione SQL che ottiene il max(RID) da ogni tabella che è necessario reimpostare. Ad esempio, se desideri avviare il seed della chiave primaria a 25000, utilizza il codice seguente (StartSeedValue - 1)

DBCC CHECKIDENT('myTable', RESEED, 24999)

Quindi, in combinazione, dovresti finire con un pensiero come questo

DECLARE @maxVal INT
SELECT @maxVal = ISNULL(max(ID),0)+1 from mytable
DBCC CHECKIDENT('mytable', RESEED, @maxVal)

Scusa per lo pseudo-codice, è passato un po' di tempo da quando ho scritto una funzione SQL :)

MODIFICA:

Grazie per la cattura, ho cambiato INTEGER in INT

USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO 

Questo ti darà un elenco di tutte le tabelle utente nel database. Usa questa query come il tuo "ciclo" e questo dovrebbe consentire di reimpostare i semi su tutte le tabelle.