Questione : Reseed tutte le tabelle nel db using DBCC CHECKIDENT in un ordine

Abbiamo una coppia di basi di dati che stiamo andando volere reseed i campi di identità su circa 100 tabelle al loro alto motivo corrente di record.

The per questo siamo che vogliamo spostare una base di dati del pari verso “il padrone„ ed i campi di identità non siano stati properly.

Is là mezzi di fare questo per tutte le tabelle in una base di dati invece di fare ogni tabella specifica una alla volta?

Thanks
class= del

Risposta : Reseed tutte le tabelle nel db using DBCC CHECKIDENT in un ordine

Il codice è sotto. Appena uncomment il exec (e commenta fuori la stampa, se voluto).
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
regolare il nocount sopra

dichiarare la tabella dei @tables (
  identità di identificazione int,
  sysname del tablename,
  sysname del columnName
)

dichiarare il @counter int
dichiarare il @count int
dichiarare nvarchar @newseed (20)
dichiarare lo sysname del @tablename
dichiarare lo sysname del @columnname
dichiarare il @sql varchar (massimo)
dichiarare il @sqlex varchar (massimo)
dichiarare il @sqlMax nvarchar (massimo)
dichiarare il @sqlMaxEx nvarchar (massimo)
DICHIARARE IL @PVALUE     VARCHAR (250)
DICHIARARE IL @PARAM      NVARCHAR (250)

regolare il @sql = “DBCC CHECKIDENT ('' @table '', RESEED, @value)„
regolare il @sqlMax = “@value=MAX PRESCELTO (@pkfield) da @table„
REGOLARE IL @PARAM = “@VALUE VARCHAR (250) PRODOTTO„
 
inserire nei @tables
selezionare TABLE_NAME DISTINTO, COLUMN_NAME
da INFORMATION_SCHEMA.COLUMNS
dove TABLE_SCHEMA = “dbo„
e COLUMNPROPERTY (object_id (TABLE_NAME), COLUMN_NAME, “IsIdentity ") = 1
ordine da TABLE_NAME
selezionare il @count = il @@ROWCOUNT

regolare il @counter = 1
mentre @counter  <>
           
Altre soluzioni  
 
programming4us programming4us