Fondamentalmente ho bisogno di ripristinare l'Incremento di identità per tutte le tabelle al suo originale. Qui ho provato un po 'di codice, ma fallisce.SQL Server Reset Incremento identità per tutte le tabelle
codice vero e proprio dal link:
USE World00_Character
GO
-- Create a cursor to loop through the System Ojects and get each table name
DECLARE TBL_CURSOR CURSOR
-- Declare the SQL Statement to cursor through
FOR (SELECT Name FROM Sysobjects WHERE Type='U')
-- Declare the @SQL Variable which will hold our dynamic sql
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = '';
-- Declare the @TblName Variable which will hold the name of the current table
DECLARE @TblName NVARCHAR(MAX);
-- Open the Cursor
OPEN TBL_CURSOR
-- Setup the Fetch While that will loop through our cursor and set @TblName
FETCH NEXT FROM TBL_CURSOR INTO @TblName
-- Do this while we are not at the end of the record set
WHILE (@@FETCH_STATUS <> -1)
BEGIN
-- Appeand this table's select count statement to our sql variable
SET @SQL = @SQL + ' (SELECT '''[email protected]+''' AS Table_Name,COUNT(*) AS Count FROM '[email protected]+') UNION';
-- Delete info
EXEC('DBCC CHECKIDENT ('[email protected]+',RESEED,(SELECT IDENT_SEED('[email protected]+')))');
-- Pull the next record
FETCH NEXT FROM TBL_CURSOR INTO @TblName
-- End the Cursor Loop
END
-- Close and Clean Up the Cursor
CLOSE TBL_CURSOR
DEALLOCATE TBL_CURSOR
-- Since we were adding the UNION at the end of each part, the last query will have
-- an extra UNION. Lets trim it off.
SET @SQL = LEFT(@SQL,LEN(@SQL)-6);
-- Lets do an Order By. You can pick between Count and Table Name by picking which
-- line to execute below.
SET @SQL = @SQL + ' ORDER BY Count';
--SET @SQL = @SQL + ' ORDER BY Table_Name';
-- Now that our Dynamic SQL statement is ready, lets execute it.
EXEC (@SQL);
GO
messaggio di errore:
Error: Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '('.
Come posso neanche rimediare SQL o ripristinare l'identità per tutte le tabelle al suo originale?
Grazie
Beh io sono come 80 tabelle con seme di default 101 e poi come 50 con 10001 e un altro 50 con 1. Così ho cercato di fare un po loop in SQL, ma cercherà fare ciclo con PHP che potrebbe essere più facile . – DanSpd
@DanSpd: aggiornato la mia risposta con il tuo modo definitivo e assolutamente preciso di farlo! :-) Godere. –
Grazie mille.Rende il mio lavoro molto più semplice :) Ti amo ragazzi – DanSpd